Mailinglisten-Archive |
On 15 Feb 01, at 11:54, CK wrote: > Hi, > > >> ich kriege: _linkein_ http://irgendwo.com _linkaus_ > >> und möchte das ersetzen mit > >> <a href='http://irgendwo.com'>http://irgendwo.com</a> > >> > > > if ereg("_linkein_(.)+_linkaus_",$string ,$regs) { > > echo "<a href='$regs[1]'>$regs[1]</a>"; > > } > > > sollte funktionieren... > Nein, eigentlich nicht. > Das + muss mit in die Klammer und ich wuerde preg_match benutzen > (schneller). Ausserdem ist der Ausdruck greedy, will heissen, er > parst so: > > $str = "_linkein_blablabla_linkaus_ asdasdpasd _linkein_blablabla_linkaus_"; > if(ereg("_linkein_(.)+_linkaus_",$string ,$regs)) > { echo "<a href='$regs[1]'>$regs[1]</a>"; } > > gibt die ausgabe: > <a href='blablabla_linkaus_ asdasdpasd _linkein_blablabla'>blablabla_linkaus_ asdasdpasd _linkein_blablabla</a> > > > Besser sollte es so funzen: > while(preg_match("!_linkein_(.+?)_linkaus_!s",$str,$back)) > { preg_replace('!_linkein_'.$back[1].'_linkaus_!','<a href="'.$back[1].'">'.$back[1]."</a>\n"); } Leider krieg ich immer einen wrong parameter count fürs preg_replace Laut Manual fehlt das Subject. Wenn ich hier aber die Variable reinschreibe, die durchsucht wird ($text), hängt sich php auf... *schnief* Hat wer eine Idee?
php::bar PHP Wiki - Listenarchive