regex mit mehreren Variablen

therealcharlie

Erfahrenes Mitglied
Also momentan stehe ich ein bisschen an. Ich möchte den string
Code:
[LINK=section:id:site]Description[/LINK]
Filtern und auf section, id, seite und description zugreifen können.
Mit dem Pattern
Code:
$pattern = "=(\[LINK\=)(.*)(\])(.*)(\[/LINK\])=sU";
funktioniert das schon ins aufsplitten von Teil 1 und Teil 2. Aber er splittet verständlicherweise noch nicht an den ":". Hat vl jemand eine Ideee, Anregung oder Lösung? Vielleicht steh icha uche infach nur auf der Leitung...
Naja, danke schonmal....
 
Hi,

probiers mal hiermit:
PHP:
preg_match_all('/\[LINK=([^:]+):([^:]+):([^\]]+)](.*)\[\/LINK\]/',$string,$result);

print_r($result);
Ungetestet!
 
hm, das funktioniert nur, wen ich nur einen [LINK... ausdruck habe, bei mehreren stoppt er nicht beim richtigen [/LINK] sondern erst beim letzten...aber trotzdem schonmal danke
 
Leider nicht. mein code sieht so aus:
PHP:
$pattern = '/\[LINK=([^:]+):([^:]+):([^\]]+)](.*)\[\/LINK\]/su';
$replace = '<a href="index.php?section=$1&amp;id=$2&amp;site=$3">$4</a>';
$string = preg_replace($pattern, $replace, $string);
der string dann z.B.:
Code:
blabla [LINK=news:21:2]Artikel 21[/LINK] blablabla [LINK=link:6:1]Link Nr.6[/LINK]
er nimmt dan den eröddnungstag vom ersten und den ende-tag vom zweiten Block....grml
 
PHP:
$pattern = '/\[LINK=([^:]+):([^:]+):([^\]]+)](.*?)\[\/LINK\]/su';
oder:
PHP:
$pattern = '/\[LINK=([^:]+):([^:]+):([^\]]+)](.*)\[\/LINK\]/sU';
 
Zuletzt bearbeitet:
Zurück