Jakob Schneider: eregi_replace funktioniert nicht...

Hi Leute,

Mein folgendes Script hier wandelt alle URL, bzw. Email-Angaben zwischen den Variablen "linkanfang ([link])" und "linkende([/link])"
um. Die Anfänge und Enden werden zuerst ausgelesen, dann der zwischenstehende String mit Rexeps auf die Syntax überprüft. Stimmt die Syntax, wird in einer Variable ($urlbegin[$i]) der Linkcode (z.B. <a href="http://www.oppa.de">http//www.oppa.de</a>) gespeichert.
Jetzt will ich im Beitrag ($beitrag) den ursprünglichen Text (z.B. http://www.patty.de) durch $urlbegin[$i] ersetzen, was ich mit eregi_replace vollbringen wollte ($beitrag=eregi_replace($url,$urlbegin[$i],$beitrag);).
Jedoch wird nicht ersetzt. Setze ich statt $url '[link]' ein, wird '[link]' jedoch ersetzt.
Warum wird nicht auch der komplette String (z.B. [link]http://www.patty.de[/link]) durch den Linkstring ersetzt?

Hier der gesamte Code:

include('inc.php');
$beitrag='cvbvcbcvbcvb [link]http://www.patty.de[/link] jdfhj[link]dhkf[/link]dkf [link]oppa@web.de[/link][link]http://www.oppa.de[/link] dfgdfgfd';
$urlbegin=explode($linkanfang,$beitrag);

$urlend=explode($linkende,$beitrag);

for ($i=0;$i<=count($urlbegin)-1;$i++)
{
$endposition=strpos($urlbegin[$i],$linkende);
if($endposition)
{
$urlbegin[$i]=substr($urlbegin[$i],0,$endposition);
}

if(preg_match(URL,$urlbegin[$i])==true)
{
$url=$urlbegin[$i];
$urlbegin[$i]='<a href="'.$urlbegin[$i].'">'.$urlbegin[$i].'</a>';
$beitrag=eregi_replace($url,$urlbegin[$i],$beitrag);

}
if(preg_match(EMAIL,$urlbegin[$i])==true)
{
$url=$urlbegin[$i];
$urlbegin[$i]='<a href="mailto:'.$urlbegin[$i].'">'.$urlbegin[$i].'</a>';
$beitrag=eregi_replace($url,$urlbegin[$i],$beitrag);
}

}

print $beitrag;

Ich hoffe, dass ich  mich verständlich ausgedrückt habe und danke euch schonmal..
MfG Jakob

PS: Bei ereg_replace tritt das selbe Problem auf...

  1. Huhu Jakob

    ich würde Dir die Verwendung von "preg_replace" und eine Konstruktion folgender Art empfehlen:

    function get_link($v)
    {
     # $v enthält das Textstück zwischen "[link]" und "[/link]"
     # hier syntax checken
     # und entsprechendes Ergebnis zurückliefern

    return $ergebnis;
    }

    $beitrag = preg_replace('/([link](.*)[/link])/msUei', "get_link('\2');", $beitrag);

    und das solltest Du lesen

    http://www.php.net/manual/en/function.preg-replace.php

    http://www.php.net/manual/en/pcre.pattern.syntax.php

    http://www.php.net/manual/en/pcre.pattern.modifiers.php

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Huhu Jakob

      Hi,

      Ich danke Dir....

      Viele Grüße

      lulu

      LG Jakob