Avatar billede madsleejensen Nybegynder
28. juli 2007 - 20:10 Der er 7 kommentarer og
1 løsning

Spm ang et regex pattern

hej sidder og leger lidt med regex PCRE

undre mig over hvorfor dette ikke matcher?

$str = "[link]mads[/link]";
$pattern = "/\[([^]]+)\]([^[]+)\[\/\1\]/";

echo preg_match ( $pattern, $str );

tror måske det er noget med min backreference ?? men kan ikke rigtigt se fejlen..
Avatar billede erikjacobsen Ekspert
28. juli 2007 - 20:26 #1
En ekstra skråstreg vil hjælpe. Jeg har lavet lidt om i den, for jeg vil hellere bruge ikke-grådige matches:    .+?  end de der negerede  [^[]+

$str = "[link]mads[/link]    [øl]vin[/øl]    ";
$pattern = "/\[(.+?)\](.+?)\[\/\\1\]/";

echo preg_match_all ( $pattern, $str, $r );
print "<br><br>";
print_r($r);
Avatar billede madsleejensen Nybegynder
30. juli 2007 - 09:09 #2
ja okai :) men lige et hurtigt spm, hvordan kan det være at den ikke escaper automatisk i en charater class?? er det mig der er helt forkert på den at tro jeg har læst det et eller andet sted at den gør eller er det bare php der opfører sig lidt anderledes ?
Avatar billede erikjacobsen Ekspert
30. juli 2007 - 09:42 #3
"i en charater class"  ??  Tænk på at "\" har en betydning både i en PHP-"..."-streng, og i et regulært udtryk.
Avatar billede madsleejensen Nybegynder
30. juli 2007 - 12:47 #4
hmmm forstår bare ikke helt hvorfor jeg skal escape min \1 giver da ikke rigtigt nogen mening ? det jeg havde læst forkert var denne sætning

The usual metacharacters are normal characters inside a character class, and do not need to be escaped by a backslash.

havde forstået det var alle tegn der ikke behøv at blive escaped
Avatar billede erikjacobsen Ekspert
30. juli 2007 - 12:57 #5
\1 betyder noget i en "..." streng i PHP. Læs http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double
Skal den ikke betyde noget, men komme videre til preg_xxxx som \1 skal der stå \\1 i "..."-strengen
Avatar billede madsleejensen Nybegynder
03. september 2007 - 09:57 #6
hov erik smid et svar. undskyld vente tiden og mange tak for hjælpen!
Avatar billede erikjacobsen Ekspert
03. september 2007 - 10:18 #7
Jeg samler slet ikke på point tak. Svar selv, accepter eget svar.
Avatar billede madsleejensen Nybegynder
04. september 2007 - 13:20 #8
lukker
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