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