problem mit eregi_replace

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • problem mit eregi_replace

    hallo,
    ich habe ein kleine frage zu ereg_replace. ich habe ein kleines cms bei dem der user links eingeben kann. diese weren dann intern formatiert als: /!1/ www.domain.de /!2/ Link zu dem Text /!3/

    Für die HTML-Ansicht wird dann daraus ein
    <a href="http://www.domain.de">Link zu dem Text</a> generiert und für eine Textdatei wird es umgeschrieben zu
    http://www.domain.de

    Mein Problem ist jetzt die Umkonvertierung für die Textdatei. Wenn es in einem Text nur einen Link gibt, funktioniert das auch.

    PHP-Code:
    $all_text "Blindtext mit dem /!1/ domain.de /!2/ Textlink /!3/ und das geht dann weiter...";
    $all_text eregi_replace("(/!1/ )(.*)(/!2/.*/!3/)","http://\\2",$all_text);    
    echo 
    $all_text 
    Ergebnis --> Blindtext mit dem http://domain.de und das geht dann weiter...

    Wenn man nun aber in einem Text mehere Links hat funktioniert mein regulärer Ausdruck nicht mehr
    PHP-Code:
        $all_text "Blindtext mit dem /!1/ domain.de /!2/ Textlink /!3/ und das geht dann weiter. Dann kommt noch einer /!1/ domain2.de /!2/ Textlink2 /!3/ ...";
        
    $all_text eregi_replace("(/!1/ )(.*)(/!2/.*/!3/)","http://\\2",$all_text);        
        echo 
    $all_text 
    Ergebnis --> Blindtext mit dem http://domain.de /!2/ Textlink /!3/ und das geht dann weiter. Dann kommt noch einer /!1/ domain2.de ...

    Hat jemand eine Idee wie ich das ändern kann, so dass der komplette Text beachtet wird?

    Danke

  • #2
    Re: problem mit eregi_replace

    Hat jemand eine Idee wie ich das ändern kann, so dass der komplette Text beachtet wird?
    es wird der ganze text betrachtet ...

    du brauchst einen ungreedy-ausdruck ... wie der aber bei den ereg-funktionen aussieht ...
    Code:
    .*?
    so, glaube ich.

    du mußt alle vorkommen von .* durch oben stehendes ersetzen.

    verwende doch das wesentlich modernere und wohl auch schnellere preg_replace .... dort gib es den modifier U, der gesetzt sein muß, um das gewünschte ergebnis zu erhalten.

    hier mal greedy: http://pcre.nophia.de/evaluate/76eee...dex.php#output
    und ungreedy: http://pcre.nophia.de/evaluate/df32a...dex.php#output
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar

    Lädt...
    X