Problem mit dem Ersetzen durch Regulären Ausdruck

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

  • Problem mit dem Ersetzen durch Regulären Ausdruck

    Hallo,

    derzeit sehe ich nicht wo das Problem bei meinem Regulären Ausdruck ist.

    Mein Ziel ist es, dass bestimmte Wörter von einem Link umschlungen werden. Daber soll es nicht passieren, wenn die Übereinstimmung in HTML - Tags stattfindet.

    Hier erst einmal mein Beispiel:
    PHP-Code:
    $my_string 'der <tabler border="0"><tr><td>der der der</td></tr></table> der|der der' ;
    $sReplace preg_replace'/(\!|\?|\.|\:| |\n|\'|\"|>|;|^)(der)($|\!|\?|\.|\:| |\r|\n|\'|\"|<|\|)/i''$1<a href="123">$2</a>$3'$my_string ) ;
    echo (
    $sReplace) ;

    // Ausgabe
    <a href="123">der</a> <tabler border="0"><tr><td><a href="123">der</ader <a href="123">der</a></td></tr></table> <a href="123">der</a>|der <a href="123">der</a
    Nur sehe ich nicht das Problem warum das beim "|" Zeichen nicht funktioniert oder das Wort von " " (Leer) Zeichen umgeben wird.

    Vielleicht hat ja der ein oder andere von Euch Rat.

    Viele Grüße
    Heinz

  • #2
    Wie meinst du das "Daber soll es nicht passieren, wenn die Übereinstimmung in HTML - Tags stattfindet.", wie sollte deine Ausgabe aussehen?

    Kommentar


    • #3
      Re: Problem mit dem Ersetzen durch Regulären Ausdruck

      Original geschrieben von Heinzelmännchen
      Nur sehe ich nicht das Problem warum das beim "|" Zeichen nicht funktioniert oder das Wort von " " (Leer) Zeichen umgeben wird.
      durch deine regex steige ich auf die schnelle nicht durch, aber vielleicht hilft es dir ja weiter:

      | müsstest du escapen \|
      leerzeichen kannst du mit \s* matchen

      Kommentar


      • #4
        Derzeit sieht mein Regulärer Ausdruck mittlerweile so aus:
        Code:
        '/([\!|\?|\.|\:|\s*|\n|\'|\"|>|;|\||^|„])(der)([$|\!|\?|\.|\:|\s*|\r|\n|\'|\"|<|\||“])/i'
        Er funktioniert soweit auch ganz gut. Nur leider wenn "der" ganz am Ende des Strings steht, dann greift dieser Ausdruck nicht. Dabei dachte ich dass das "$" dieses auch mit berücksichtigen soll. Was es aber anscheinend nicht macht.

        Hat jemand von Euch eine Idee?

        Kommentar


        • #5
          vielleicht

          (...)(der)(...)?

          Kommentar

          Lädt...
          X