kniffliges preg_replace Problem

Ahri

Grünschnabel
Hallo :)

Ich versuche im Moment, einen Text der auf einer Variable liegt so umzuwandeln, dass er alle Links, die zusätzlich mit einem bestimmten Attribut gekennzeichnet sind in <span>'s umwandelt (also die Links rauswirft), die anderen Links aber in Ruhe lässt.

Beispiel1:

<a href="ndex.php?title=beispiel1&amp;action=edit" class="new" title="beispiel1">beispiel1</a>

Hier ist das gefragte Attribut (class="new") gesetzt, daher soll daraus

<span>beispiel1</span>

werden.

Beispiel2:

<a href="/index.php/beispiel2" title="beispiel2">beispiel2</a>

Hier ist kein class="new" vorhanden - daher soll das genau so bleiben.

Ich habs bisher mit

$this->html('bodytext') = preg_replace("/<a.*\".*\" class=\"new\".*>/", '<span>', $this->html('bodytext'));

probiert, allerdings weis ich nicht, wie ich dann das </a> hinten wegbekommen soll *grübel* (denn das Pattern würde ja auch bei den "normalen" Links ein </a> finden). Ausserdem hab ich keine Ahnung, ob das mit dem $this überhaupt so angesprochen werden kann.

Bin etwas ratlos, grübel nun schon eine Weile ...
 
das ersetzt den ganzen tag inklusive dem enddtag und weist das ergebnis der variable $stripped zu, weil du den rückgabewert der funktion nicht einer anderen funktion zuweisen kannst. Soweit jedenfalls die Theorie. probiers einfach mal aus

PHP:
$stripped = preg_replace("/<a.*class=\"new\".*>(.*)</a>/", "<span>\1</span>", $this->html('bodytext'));
 
Zurück