26. februar 2011 - 10:35
Der er
8 kommentarer og 1 løsning
erstat * punkter med UL
Er det en som kan lave en reg exp som erstatter: Tekst tekst tekst tekst tekst * Egenskab 1 * Egenskab 2 * Egenskab 3 tekst tekst tekst tekst tekst med Tekst tekst tekst tekst tekst <ul class="pkt"> <li>Egenskab 1</li> <li>Egenskab 2</li> <li>Egenskab 3</li> </ul> tekst tekst tekst tekst tekst Antal egenskaber kan variere og "tekst"/"Egenskab" er naturligvis dummy tekst.
Annonceindlæg fra Samsung Knox
27. februar 2011 - 11:55
#1
Hmm, kan et punkt bestå af flere linier? For ellers, hvis du laver et Regex.Replace med indstillingen "Multiline", så skulle følgende to kunne gøre det: "^\*([^\r\n]*)" med "<li>$1</li>" "^((?:\<li\>[^\<]*\</li>\r\n)+)" med "<ul class="pkt">$1</ul>" Hvis der er andet der skal tages højde for, må du lige sige til.
27. februar 2011 - 15:26
#2
Et punkt kan vel godt bestå af linjeskift, men tænker ikke det bliver aktuelt. Jeg troede jeg selv kunne sætte din reg exp ind i PHP, men jeg forstår desværre ikke hvordan det skal gøres. Kan du finde ud af det? <?php echo(ereg_replace("regexp"),$tekst)); ?>
27. februar 2011 - 15:32
#3
<?php echo(ereg_replace("regexp",$tekst)); ?>
27. februar 2011 - 18:16
#4
Er ikke lige PHP jeg er skarpest til, men det her tror jeg virker: <?php echo(preg_replace("^((?:\<li\>.*?\</li>\r\n)+)", "<ul class="pkt">$1</ul>", preg_replace("^\*([^\r\n]*)", "<li>$1</li>", $tekst))); ?> Jeg opdagede også lige en fejl i udtrykket (det tog ikke højde for tilstedeværelsen af andre "<" tegn), men det er rettet nu. Problemet med at et punkt består af linjeskift er, at så har du ikke en definition for hvornår noget er et punkt, og hvonår det ikke er. I dit eksempel vil følgende: "* Egenskab 3 tekst tekst tekst tekst tekst" blive til ét stort punkt, med mindre du har en anden måde at afslutte listen på.
27. februar 2011 - 18:26
#5
Jeg kan noget PHP og det der giver ikke mening for mig hehe. Det giver en syntax fejl.
28. februar 2011 - 10:04
#6
hmm, hvor gemmer du din text? Sådan her burde det kunne lade sig gøre i hvert fald: <?php $text = "Tekst tekst tekst tekst tekst * Egenskab 1 * Egenskab 2 * Egenskab 3 tekst tekst tekst tekst tekst"; $text = preg_replace("^\*([^\r\n]*)", "<li>$1</li>", $text); $text = preg_replace("^((?:\<li\>.*?\</li>\r\n)+)", "<ul class="pkt">$1</ul>", $text); echo $text; ?>
28. februar 2011 - 14:39
#7
Warning: preg_replace() [function.preg-replace]: Unknown modifier ' ' in list.php on line 175 Den skriver denne fejlmeddelelse. Jeg har prøvet at ændre gåseøjn til qoutes, men det hjalp ikke.
28. februar 2011 - 14:40
#8
og næste linje siger følgende fejl: Warning: preg_replace() [function.preg-replace]: No ending delimiter '^' found in list.php on line 177
07. august 2011 - 16:34
#9
Tak for deltagelsen.
Kurser inden for grundlæggende programmering