preg_replace "schluckt" zuviel

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

  • preg_replace "schluckt" zuviel

    Tach erstmal!

    Mein Problem
    Ich will ein Wort ersetzen wenn es alleine steht, spezieller wenn vor und/oder hinter dem Wort keine Zeichen [a-zA-Z0-9] stehen.
    Jedoch sollen "Sondernzeichen" ala [:,._-§%$] erlaubt sein.

    Mein Versuch
    PHP-Code:
    <?
    $text = "Ich bin in der Stadt";
    echo $text."<br />";
    $suche = "/[^a-zA-Z0-9]in[^a-zA-Z0-9]/U";
    $ersatz = '<b>in</b>';
    $text = preg_replace($suche, $ersatz, $text);
    echo $text;
    ?>
    Als Ergebnis erwartete ich:
    Ich bin in der Stadt

    Jedoch bekam ich:
    Ich bininder Stadt

    raus!
    Es wird einfach immer ein Zeichen vor und nach dem "Ersatz-Wort" verschluckt. Egal ob Leerzeichen oder Buchstabe etc.

    Erwartung
    Ich würde mich freuen wenn ihr mir Tipps geben könntet, wie ich das Prob lösen kann.

    cu messingfeld

  • #2
    PHP-Code:
    $suche "/(.*)[^a-zA-Z0-9](in)[^a-zA-Z0-9](.*)/U";
    $ersatz '$1 <b>$2</b> $3'
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      EDIT:
      zulangsam

      Kommentar


      • #4
        Erstmal vielen Dank jedoch kommt immer noch nicht raus was ich erwarte.
        Vielleicht habe ich mich auch ein wenig missverständlich ausgedrückt:

        Beispiel
        PHP-Code:
        <?
        $text = "Ich bin ?in der Stadt";
        echo $text."<br />";
        $suche = "/(.*)[^a-zA-Z0-9](in)[^a-zA-Z0-9](.*)/U";
        $ersatz = '$1 <b>$2</b> $3';
        $text = preg_replace($suche, $ersatz, $text);
        echo $text;
        ?>
        Erwartet:
        Ich bin ?in der Stadt

        Erhalten:
        Ich bin in der Stadt

        Schluckt schon wieder zuviel?

        Für Tipps und Tricks bin ich weiterhin offen.

        cu messingfeld

        Kommentar


        • #5
          so?
          PHP-Code:
          $suche "/(.*)([^a-zA-Z0-9])(in)([^a-zA-Z0-9])(.*)/U";
          $ersatz '$1$2<b>$3</b>$4$5'

          geht aber sicherlich noch einfacher ... *g*
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar

          Lädt...
          X