joschua: str_replace von Links aus text mit alias?

Hallo,

ich habe ein kleines Problem, unsere Text-Datenbank ist etwas verseucht, denn sie enthält Links wie zb.
<a href="?seite=300" class="link">300</a>
Gibt es eine Möglichkeit mit zb. str_replace alle Links zu entfernen ohne jede erdenkliche Version an zu sprechen?

zb.
$text = str_replace('<a href="?seite=*" class="link">', '', $text);
$text = str_replace('</a>', '', $text);

(hier soll der * das alias symbolisieren?

  1. PCRE sollten dich in diesem Kontext interessieren, preg_replace() ist eine Möglichkeit.

    Stringfunktionien sind hier nur unnötig komplziert.

    <a href="?seite=
    eine oder mehere Ziffern: \d+
    " class="link">
    eine oder mehere Ziffern
    </a>

    ggf. noch mit einem Callback um zu vergleichen ob die beiden Ziffern identisch sind?

    1. PCRE sollten dich in diesem Kontext interessieren, preg_replace() ist eine Möglichkeit.

      Hm,

      $text = preg_replace('<a href="?seite=/[^0-9]/_00.html" class="link">','',$text);

      ersetzt nicht

      <a href="?seite=300_00.html" class="link">

      einen Syntaxfehler bekomme ich auch nicht. Habe ich es falsch angewendet?

      1. einen Syntaxfehler bekomme ich auch nicht.

        Ja und weil meine Glaskugel heute gut funktioniert: die Fehlermeldung sagt dir, dass die Delimiter fehlen. Zudem haben gewisse Zeichen in einem PCRE eine Sonderbedeutung - das Fragezeichen z.B. - und müssen maskiert werden.

        Habe ich es falsch angewendet?

        Nebst der Syntaxfehler?

        [^0-9] matcht nicht auf eine beliebige Dezimalzahl. Was dafür imho notwendig ist, hatte ich bereits angemerkt.

  2. Wenn man feste Strings und völlig beliebige Zeichenketten als Kriterium hat, kann man auch z.B. mit strpos() und substr() arbeiten.