Avatar billede Slettet bruger
20. december 2008 - 23:43 Der er 44 kommentarer og
1 løsning

Regular expressions: Fejl

Hej eksperter,

http://www.ovrkll.com/development/ får jeg følgende fejl:


Warning: preg_replace() [function.preg-replace]: Unknown modifier 'h' in /customers/ovrkll.com/ovrkll.com/httpd.www/development/index.php on line 130

Den relevante kode er som følger:

    class Formatting
    {
        public static $Patterns = array
        (
            "h1" => "/\[h1\](.*?)\[/h1\]/",
            "h2" => "/\[h2\](.*?)\[/h2\]/",
            "h3" => "/\[h3\](.*?)\[/h3\]/",
            "b" => "/\[b\](.*?)\[/b\]/",
            "i" => "/\[i\](.*?)\[/i\]/",
            "u" => "/\[u\](.*?)\[/u\]/",
            "il1" => "/\[il\](.*?)\[/il\]/e",
            "il2" => "/\[il=*.?\](.*?)\[/il\]/e",
            "el1" => "/\[el\](.*?)\[/el\]",
            "el2" => "/\[el=.*?\](.*?)\[/el\]"
        );
       
        public static $Replacements = array
        (
            "h1" => "<h1>$1</h1>",
            "h2" => "<h2>$1</h2>",
            "h3" => "<h3>$1</h3>",
            "b" => "<b>$1</b>",
            "i" => "<i>$1</i>",
            "u" => "<u>$1</u>",
            "il1" => "'<a title=\"'.Page::GetPage(\\0, true)->Title.'\" href=\"?location=\\0\">'.Page::LastPage(\\0)->Title.'</a>'",
            "il2" => "'<a title=\"'.Page::GetPage(\\0)->Title.'\" href=\"?location=\\0\">\\1</a>'",
            "il2" => "'<a title=\"'.Page::GetPage(\\0)->Title.'\" href=\"?location=\\0\">\\1</a>'",
            "el1" => "<a title=\"$1\" href=\"$1\">$1</a>",
            "el2" => "<a title=\"$2\" href=\"$1\">$2</a>"
        );
       
        public static function Convert($string)
        {
            return preg_replace(self::$Patterns, self::$Replacements, $string); // Linje 130
        }

Hvad er der galt?
Avatar billede micc Nybegynder
21. december 2008 - 01:43 #1
Du har glemt at escape nogen (alle?) af dine /'er. Se på fx den første expression:
  /\[h1\](.*?)\[/h1\]/
Den afsluttees lige før h pga. /'en og derfor antager php at den resterende del af strengen
  h1\]/
er flags. I det konkrete eksempel skulle strengen istedet være
  /\[h1\](.*?)\[\/h1\]/
Avatar billede coderdk Praktikant
21. december 2008 - 01:49 #2
Hvis du bruger mange / i dine expressions, kan det være smartere at bruge en anden delimiter som f.eks. #, e.g. den første "/\[h1\](.*?)\[/h1\]/" bliver til "#\[h1\](.*?)\[/h1\]#"
Avatar billede Slettet bruger
21. december 2008 - 09:53 #3
Aha. Damn, jeg synes godt nok, RE-konteksten er forvirrende. Jeg prøver lige...
Avatar billede Slettet bruger
21. december 2008 - 10:46 #4
Jeg får nogle fejl og har rodet lidt rundt...

    class Formatting
    {
        public static $Patterns = array
        (
            "h1" => "#\[h1\](.*?)\[/h1\]#",
            "h2" => "#\[h2\](.*?)\[/h2\]#",
            "h3" => "#\[h3\](.*?)\[/h3\]#",
            "b" => "#\[b\](.*?)\[/b\]#",
            "i" => "#\[i\](.*?)\[/i\]#",
            "u" => "#\[u\](.*?)\[/u\]#",
            "il1" => "#\[il\](.*?)\[/il\]#e",
            "il2" => "#\[il=*.?\](.*?)\[/il\]#e",
            "el1" => "#\[el\]([0-9a-zA-Z_-]+)\.([a-z]{2,4})[/el\]#",
            "el2" => "#\[el\]([0-9a-zA-Z_-]+)\.([a-z]{2,4})/(.+)[/el\]#",
            "el3" => "#\[el=([0-9a-zA-Z_-]+)\.([a-z]{2,4})\](.+)\[/el\]#",
            "el4" => "#\[el=([0-9a-zA-Z_-]+)\.([a-z]{2,4})/(.+)\](.+)\[/el\]#"
        );
       
        public static $Replacements = array
        (
            "h1" => "<h1>$1</h1>",
            "h2" => "<h2>$1</h2>",
            "h3" => "<h3>$1</h3>",
            "b" => "<b>$1</b>",
            "i" => "<i>$1</i>",
            "u" => "<u>$1</u>",
            "il1" => "'<a title=\"'.Page::GetPage(\\0, true)->Title.'\" href=\"?location=\\0\">'.Page::LastPage(\\0)->Title.'</a>'",
            "il2" => "'<a title=\"'.Page::GetPage(\\0)->Title.'\" href=\"?location=\\0\">\\1</a>'",
            "el1" => "<a title=\"www.$1\" href=\"http://www.$1/\" target=\"_blank\">$1</a>",
            "el2" => "<a title=\"www.$1\" href=\"http://www.$1\" target=\"_blank\">$1</a>",
            "el3" => "<a title=\"www.$1\" href=\"http://www.$1/\" target=\"_blank\">$2</a>",
            "el4" => "<a title=\"www.$1\" href=\"http://www.$1\" target=\"_blank\">$2</a>"
        );
       
        public static function Convert($string)
        {
            return preg_replace(self::$Patterns, self::$Replacements, $string);
        }
    }

echo Formatting::Convert("[el]google.com[/el]");

Warning: preg_replace() [function.preg-replace]: Compilation failed: missing terminating ] for character class at offset 42 in /customers/ovrkll.com/ovrkll.com/httpd.www/development/index.php on line 133
Avatar billede Slettet bruger
21. december 2008 - 10:53 #5
Okaj, fejlen var åbenlys. Never mind.
Avatar billede Slettet bruger
21. december 2008 - 11:01 #6
Alle funktioner til eksterne links, givet ved [el]target[/el] og [el=target]title[/el], fungerer nu. Så kommer det svære: Interne links!

Jeg har rettet lidt:

    class Formatting
    {
        public static $Patterns = array
        (
            "h1" => "#\[h1\](.*?)\[/h1\]#",
            "h2" => "#\[h2\](.*?)\[/h2\]#",
            "h3" => "#\[h3\](.*?)\[/h3\]#",
            "b" => "#\[b\](.*?)\[/b\]#",
            "i" => "#\[i\](.*?)\[/i\]#",
            "u" => "#\[u\](.*?)\[/u\]#",
            "il1" => "#\[il\](.*?)\[/il\]#e",
            "il2" => "#\[il=*.?\](.*?)\[/il\]#e",
            "el1" => "#\[el\]([0-9a-zA-Z_-]+)\.([a-z]{2,4})\[/el\]#",
            "el2" => "#\[el\]([0-9a-zA-Z_-]+)\.([a-z]{2,4})/(.+)\[/el\]#",
            "el3" => "#\[el=([0-9a-zA-Z_-]+)\.([a-z]{2,4})\](.+)\[/el\]#",
            "el4" => "#\[el=([0-9a-zA-Z_-]+)\.([a-z]{2,4})/(.+)\](.+)\[/el\]#"
        );
       
        public static $Replacements = array
        (
            "h1" => "<h1>$1</h1>",
            "h2" => "<h2>$1</h2>",
            "h3" => "<h3>$1</h3>",
            "b" => "<b>$1</b>",
            "i" => "<i>$1</i>",
            "u" => "<u>$1</u>",
            "il1" => "'<a title=\"'.Page::GetPage(\\0, true)->Title.'\" href=\"?location=\\0\">'.Page::LastPage(\\0)->Title.'</a>'",
            "il2" => "'<a title=\"'.Page::GetPage(\\0)->Title.'\" href=\"?location=\\0\">\\1</a>'",
            "el1" => "<a title=\"www.$1.$2\" href=\"http://www.$1.$2/\" target=\"_blank\">$1.$2</a>",
            "el2" => "<a title=\"www.$1.$2/$3\" href=\"http://www.$1.$2/$3\" target=\"_blank\">$1.$2/$3</a>",
            "el3" => "<a title=\"www.$1.$2\" href=\"http://www.$1.$2/\" target=\"_blank\">$3</a>",
            "el4" => "<a title=\"www.$1.$2/$3\" href=\"http://www.$1.$2/$3\" target=\"_blank\">$4</a>"
        );
       
        public static function Convert($string)
        {
            return preg_replace(self::$Patterns, self::$Replacements, $string);
        }
    }

echo Formatting::Convert("[il]mapping[/il]");

Ovenstående skulle gerne give:

<a title="Mapping" href="?location=mapping">Mapping</a>

Men jeg får følgende fejl:

Parse error: syntax error, unexpected '[', expecting ')' in /customers/ovrkll.com/ovrkll.com/httpd.www/development/index.php(133) : regexp code on line 1

Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: '&lt;a title=&quot;'.Page::GetPage([il]mapping[/il], true)-&gt;Title.'&quot; href=&quot;?location=[il]mapping[/il]&quot;&gt;'.Page::LastPage([il]mapping[/il])-&gt;Title.'&lt;/a&gt;' in /customers/ovrkll.com/ovrkll.com/httpd.www/development/index.php on line 133

Igen kan "resultatet" ses på http://www.ovrkll.com/development/ .
Avatar billede Slettet bruger
21. december 2008 - 11:03 #7
Det skal lige siges, at klassen Page indeholder informationer om hver side hentet fra en databasetabel først i PHP-koden. Page::GetPage-funktionen (statisk) henter en side ud fra dennes adresse.
Avatar billede Slettet bruger
21. december 2008 - 23:08 #8
Ingen hjælp at hente? :(
Avatar billede Slettet bruger
25. december 2008 - 19:45 #9
Så! Nu har jeg endelig fået skidtet til at fungere. Der er dog et lille problem:

http://www.ovrkll.com/development/

Altså:

LOL![/il]
[il=home]LOL 2!
Mapping

PHP kan tilsyneladende godt lide at fortolke start og slut på formatteringskoden som en del af indholdet. Hvordan undgår jeg dette? Koden ses herunder:

"#\[il=([0-9a-z_-]+)\](.+)\[/il\]#e"

Og

'\'<a title="\'.Page::GetPage($1)->Title.\'" href="?location=$1">$2</a>\''
Avatar billede coderdk Praktikant
25. december 2008 - 19:55 #10
"#\[il=([0-9a-z_-]+)\](.+)\[/il\]#e"

skal nok være

"#\[il=([0-9a-z_-]+)\](.+?)\[/il\]#e"
Avatar billede Slettet bruger
25. december 2008 - 21:23 #11
Ja... Den er sgu god nok - men hvorfor? Nogen der kender en teknisk forklaring på, hvorfor jeg ikke kan kræve, at der står noget mellem [il=$1] og [/il]?
Avatar billede coderdk Praktikant
25. december 2008 - 21:53 #12
Det hedder "greediness". Hvis du har en streng "YXXZXXZ" vil X.+X vil matche XXZXXZ mens X.+?Z kun vil matche XXZ...
Avatar billede Slettet bruger
25. december 2008 - 22:06 #13
Weird... Men tak :) Bare smid et svar - jeg tror, jeg har styr på det hele lige om snart.
Avatar billede coderdk Praktikant
25. december 2008 - 22:17 #14
Cool :) Regex er et godt værktøj at kunne :D
Avatar billede Slettet bruger
26. december 2008 - 00:08 #15
Jeps... Men selvfølgelig slap jeg ikke så let!

Prøv lige at se her:

www.ovrkll.com/development

Der kommer nogle store grimme vertikale mellemrum. Årsagen er, at mit script til fjernelse af linjeskift lige før og efter div-tags ikke fungerer. Koden er som følger:

public static $Patterns = array
        (
            "h1" => "#\[h1\](.+)\[/h1\]#",
            "h2" => "#\[h2\](.+)\[/h2\]#",
            "h3" => "#\[h3\](.+)\[/h3\]#",
            "b" => "#\[b\](.+)\[/b\]#",
            "i" => "#\[i\](.+)\[/i\]#",
            "u" => "#\[u\](.+)\[/u\]#",
            "il1" => "#\[il\]([0-9a-z_-]+)\[/il\]#e",
            "il2" => "#\[il=([0-9a-z_-]+)\](.+?)\[/il\]#e",
            "el1" => "#\[el\]([0-9a-z_-]+)\.([a-z]{2,4})\[/el\]#",
            "el2" => "#\[el\]([0-9a-z_-]+)\.([a-z]{2,4})/(.+)\[/el\]#",
            "el3" => "#\[el=([0-9a-z_-]+)\.([a-z]{2,4})\](.+)\[/el\]#",
            "el4" => "#\[el=([0-9a-z_-]+)\.([a-z]{2,4})/(.+)\](.+)\[/el\]#",
            "m1" => "#\[m\]([0-9a-zA-Z_-]+)@([0-9a-z_-]+)\.([a-z]{2,4})\[/m\]#",
            "m2" => "#\[m=([0-9a-zA-Z_-]+)@([0-9a-z_-]+)\.([a-z]{2,4})\](.+)\[/m\]#",
            "s" => "#\[s=(.+)\](((.+) )+?.+)\[/s\]#e",
            "n1" => "#(((\n)|(<br>))*?)<div(.*?)>(.*?)</div>(((\n)|(<br>))*?)#",
            "n2" => "#\n#"
        );
       
        public static $Replacements = array
        (
            "h1" => "<h1>$1</h1>",
            "h2" => "<h2>$1</h2>",
            "h3" => "<h3>$1</h3>",
            "b" => "<b>$1</b>",
            "i" => "<i>$1</i>",
            "u" => "<u>$1</u>",
            "il1" => '\'<a title="\'.Page::GetPage($1, true)->Title.\'" href="?location=$1">\'.Page::$LastPage->Title.\'</a>\'',
            "il2" => '\'<a title="\'.Page::GetPage($1)->Title.\'" href="?location=$1">$2</a>\'',
            "el1" => "<a title=\"www.$1.$2\" href=\"http://www.$1.$2/\" target=\"_blank\">$1.$2</a>",
            "el2" => "<a title=\"www.$1.$2/$3\" href=\"http://www.$1.$2/$3\" target=\"_blank\">$1.$2/$3</a>",
            "el3" => "<a title=\"www.$1.$2\" href=\"http://www.$1.$2/\" target=\"_blank\">$3</a>",
            "el4" => "<a title=\"www.$1.$2/$3\" href=\"http://www.$1.$2/$3\" target=\"_blank\">$4</a>",
            "m1" => "<a title=\"$1@$2.$3\" href=\"mailto:$1@$2.$3\">$1@$2.$3</a>",
            "m2" => "<a title=\"$1@$2.$3\" href=\"mailto:$1@$2.$3\">$4</a>",
            "s" => '\'<div class="screenshots">$1</div><div>\'.Formatting::ArrangeScreenshots($2, $1).\'</div>\'',
            "n1" => "<div$1>$2</div>",
            "n2" => "<br>"
        );
       
        public static function Convert($string)
        {
            return preg_replace(self::$Patterns, self::$Replacements, $string);
        }

Kildekoden bliver:

<div class="content"><div>Welcome to OVKRLL.com!</div><div>Toke Skovbo Krainert's official portfolio</div><div>On OVRKLL.com you will find most of my work with mapping, modding and programming as well as frequently updated news and information about me and my site.</div><h1>News: OVRKLL.com V2 is online!</h1>
<br>Finally, the second edition of my homepage is online!
<br>The last one was quite retro so I though of this concept as a stylish change to the layout and theme.
<br>
<br><h1>Introduction</h1>
<br>Hello and welcome to OVRKLL.com, my official online portfolio!<div class="details">Page edited on December 31, 23:04:27 UTC</div></div>

Foruden de manglende sletninger af linjeskift undrer det mig også, at der kommer skift i kildekoden - disse skulle jo netop erstattes med br-tags!
Avatar billede coderdk Praktikant
26. december 2008 - 00:36 #16
Prøv at lave

  "n2" => "#\n#"

om til

  "n2" => "#\r?\n#"

jeg er ikke helt med på, hvad du ellers mener? Er der for mange? Så prøv:

  "n2" => "#(\r?\n)+#"
Avatar billede Slettet bruger
26. december 2008 - 01:03 #17
Nu anvender jeg
"n2" => "#(((\r)?\n)+)#"
Det virker heller ikke.
Avatar billede coderdk Praktikant
26. december 2008 - 02:25 #18
Hmm jeg er nok nødt til at se inputteksten og hvad du vil have den til at blive til ;P
Avatar billede Slettet bruger
26. december 2008 - 10:14 #19
Okaj, så laver jeg et eksempel...

Input (fra tekstfelt til database og senere fortolket til output, når brugeren besøger siden):

A
B

C<div>D
E</div>F
<div>
G
</div>
H

Svarende til:

A\nB\n\nC<div>D\nE</div>F\n<div>\nG\n</div>\nH

Output:

A<br>B<br><br>C<div>D<br>E</div>F<div>G</div>H

Men så vidt jeg kan se, bliver outputtet mere noget i den her stil:

A\n<br>B\n<br>\n<br>C<div>D\n<br>E</div>F\n<br><div>\n<br>G\n<br></div>\n<br>H
Avatar billede Slettet bruger
26. december 2008 - 10:17 #20
Og så har jeg lige opdateret koden lidt:

"n1" => "#((((\r)?\n)|(<br>))*?)<div(.*?)>((((\r)?\n)|(<br>))*?)(.*?)((((\r)?\n)|(<br>))*?)</div>((((\r)?\n)|(<br>))*?)#",
"n2" => "#(((\r)?\n)+)#"

"n1" => "<div$1>$2</div>",
"n2" => "<br>"
Avatar billede Slettet bruger
27. december 2008 - 23:14 #21
Damn, ingen hjælp? :(
Avatar billede coderdk Praktikant
27. december 2008 - 23:21 #22
Prøv at tilføje "s" til dine switches, altså #s
Avatar billede Slettet bruger
28. december 2008 - 00:30 #23
Den forstod jeg ikke. Eksempel, tak :)
Avatar billede coderdk Praktikant
28. december 2008 - 01:00 #24
"n1" => "#(((\n)|(<br>))*?)<div(.*?)>(.*?)</div>(((\n)|(<br>))*?)#",
            "n2" => "#\n#"

bliver til

            "n1" => "#(((\n)|(<br>))*?)<div(.*?)>(.*?)</div>(((\n)|(<br>))*?)#s",
            "n2" => "#\n#s"
Avatar billede Slettet bruger
28. december 2008 - 11:36 #25
Nå. Eksperten besluttede sig lige for igen at slette alt, hvad jeg havde skrevet. Tak for lort.
Anyway, here goes:

Jeg har lavet et par ændringer (s virkede ikke). Se her:

"n1" => "#\r?\n#",
"n2" => "#(<br>)*<div(.+?)>(<br>)*(.)+?(<br>)*</div>(<br>)*#",
"n3" => "#(<br>)*<h1>(<br>)*(.)+?(<br>)*</h1>(<br>)*#",
"n4" => "#(<br>)*<h2>(<br>)*(.)+?(<br>)*</h2>(<br>)*#",
"n5" => "#(<br>)*<h3>(<br>)*(.)+?(<br>)*</h3>(<br>)*#"

"n1" => "<br>",
"n2" => "<div>Div</div>",
"n3" => "<h1>H1</h1>",
"n4" => "<h2>H2</h2>",
"n5" => "<h3>H3</h3>"

Altså inkluderet headlines og sat ændring af linjeskrift til break-tags øvers - men det virker stadig ikke. Se www.ovrkll.com/development .

Hvad pokker?
Avatar billede Slettet bruger
28. december 2008 - 11:38 #26
Den oprindelige tekst er:

News: OVRKLL.com V2 is online!


Finally, the second edition of my homepage is online!
The last one was quite retro so I though of this concept as a stylish change to the layout and theme.

Introduction


Hello and welcome to OVRKLL.com, my official online portfolio!
<div>
Test
</div>
Endtest


Det skulle gerne blive til:

<h1>H1</h1>Finally, the second edition of my homepage is online!<br>The last one was quite retro so I though of this concept as a stylish change to the layout and theme.<h1>H1</h1>Hello and welcome to OVRKLL.com, my official online portfolio!<div>Div</div>Endtest
Avatar billede Slettet bruger
29. december 2008 - 16:25 #27
Okay, jeg tror jeg ved, hvad problemet er... Greediness/lazyness igen.
Er der ikke en mellemting? Jeg har behov for at matche så mange karakterer som muligt, indtil næste del af udtrykket findes første gang. Se eksemplet herunder.

Streng
XXXYYXXX

Greedyness (.*Z*)
$1 = XXXXXXX

Laziness (.*?Z*)
$1 = X
$2 = YY

Hvad jeg har brug for
$1 = XXX
$2 = YY
Avatar billede Slettet bruger
29. december 2008 - 16:26 #28
Rettelse:

Streng
XXXYYXXX

Greedyness (.*Y*)
$1 = XXXXXXX

Laziness (.*?Y*)
$1 = X
$2 = YY

Hvad jeg har brug for
$1 = XXX
$2 = YY
Avatar billede coderdk Praktikant
29. december 2008 - 21:20 #29
(.+?)(Y+)

måske?
Avatar billede Slettet bruger
29. december 2008 - 22:43 #30
Nej, for det forudsætter jo, at Y findes.
Avatar billede coderdk Praktikant
30. december 2008 - 01:12 #31
Erh, er det ikke meningen? Hvad vil du?
Avatar billede Slettet bruger
30. december 2008 - 10:34 #32
Okaj, så skriver jeg eksemplet.

(<br>*)<div( .¤)?>(<br>*).¤(<br>*)</div>(<br>*)

Hvor ¤ betyder, at strengen skal fanges så mange gange som muligt, indtil den næste går op første gang.
Avatar billede coderdk Praktikant
30. december 2008 - 10:40 #33
(<br>*) betyder noget andet end du tror, tror jeg ;)

Den vil matche <br>>>>>>>>>> og <br og <br>>>

* betyder 0 eller flere af foregående ? kan både slå greediness fra og fortælle, at det er en "optional" gruppe, i.e.

(<br>)? betyder at <br> kan være der, men ikke nødvendigvis...
Avatar billede Slettet bruger
30. december 2008 - 11:54 #34
Okaj,

(<br>)*<div( .¤)?>(<br>)*.¤(<br>)*</div>(<br>)*

Men hvis jeg skriver

(<br>)*<div( .*?)?>(<br>)*.*?(<br>)*</div>(<br>)*

Virker det ikke. Lige et sekund.
Avatar billede Slettet bruger
30. december 2008 - 11:59 #35
Her:

portfolio!
<div>
Test
</div>
Endtest

Altså:

portfolio!\n<div>\nTest\n</div>\nEndtest

Bliver desværre til:

portfolio!<div><br></div>Endtest

Med:

"n2" => "#(<br>)*<div( .*?)?>(<br>)*.*?(<br>)*</div>(<br>)*#"

"n2" => "<div$2>$4</div>"
Avatar billede Slettet bruger
04. januar 2009 - 13:19 #36
Ingen svar? :S
Jeg skal bare bruge en operator, der tager så mange tegn som muligt uden at være greedy.
Avatar billede Slettet bruger
04. januar 2009 - 13:49 #37
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGH!!!!!!!!!!!!!!!
Igen har Eksperten besluttet sig for at slette min kommentar!


---


Det lader til, at problemet er, at RegEx nægter at huske hele indholdet af div-tagget.


"n2" => "#(<br>)*<div( .*?)?>.*?</div>(<br>)*#"

"n2" => "<div$2>$3</div>"


"BODY1<br><div class=\"cakish\"><br>DIV1<br>DIV2<br></div><br>BODY2"

BODY1<div class="cakish"><br></div>BODY2

Men det burde være:

BODY1<div class="cakish"><br>DIV1<br>DIV2<br></div>BODY2



"<br>DIV1<br>DIV2<br>"

bliver kun

"<br>"

!


Hvad pokker?!
Avatar billede coderdk Praktikant
05. januar 2009 - 09:11 #38
Den er ikke i en gruppe? Prøv at ændre

"n2" => "#(<br>)*<div( .*?)?>.*?</div>(<br>)*#"

til

"n2" => "#(<br>)*<div( .*?)?>(.*?)</div>(<br>)*#"
Avatar billede Slettet bruger
06. januar 2009 - 08:56 #39
Ser man det... Skidtet virker nu (sådan da). Skal værdier til udhentning altid være grupperet?
Avatar billede coderdk Praktikant
06. januar 2009 - 09:38 #40
Ja, med mindre du skal bruge det hele ($0) :)
Avatar billede Slettet bruger
06. januar 2009 - 10:24 #41
Så $0 returnerer hele den matchede streng?
Avatar billede coderdk Praktikant
06. januar 2009 - 10:41 #42
Yeps :)
Avatar billede Slettet bruger
06. januar 2009 - 12:59 #43
Jeg roder lige lidt videre selv... Det er vist ikke fair at trække accepten af dit svar længere ud :)
Avatar billede coderdk Praktikant
06. januar 2009 - 13:33 #44
;-) takker
Avatar billede Slettet bruger
06. januar 2009 - 17:56 #45
HAH!
At værdier til udhentning skal være grupperede gjorde sgu den endelige forskel; med lidt tweaks kom jeg frem til følgende:

"n1" => "#\r?\n#",
"n2" => "#(<br>)*<div( .*?)?>(<br>)*(.*?)(<br>)*</div>(<br>)*#"

"n1" => "<br>",
"n2" => "<div$2>$4</div>"

Og det virker sgu! Mange tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester