eine span-Tag um jeden a-Tag legen

super-nova

Grünschnabel
Hallo zusammen,

ich suche schon geraume Zeit nach einer Möglichkeit, in einem Webseite Quellcode alle a-Tags mit einem zusätzlichen span-Tag zu versehen.
Ich würde das gerne mit der PHP-Funktion preg_replace machen und habe mir dabei folgendes Suchmuster überlegt, welches auch funktionieren müßte:
PHP:
	$suchmuster = '/<a\b[^>]*>(.*?)<\/a>/';
Ich denke mal, dass paßt auf alle a-Tag in einem Quellcode.

Nun komme ich zur Ersetzung:
Es soll einfach ein zusätzlicher span-Tag um jeden a-Tag gelegt werden,
also aus
Code:
<a href"xxxxxxx" .....>Link</a>
soll werden
Code:
<span><a href"xxxxxxx" .....>Link</a></span>

das bekomme ich einfach nicht hin.

Hat jemand von euch einen Tipp dazu.

liebe Grüsse
 
Zuletzt bearbeitet von einem Moderator:
Vielleicht so:
PHP:
$pattern=array('<a ','</a>');
$replace=array('<span><a ','</a></span>');
$html=str_ireplace($pattern,$replace,$html);
 
Danke schön für den Tipp :-)
in der Tat funktioniert das. Ich hatte auch schon mit str_replace experimentiert. Ich dachte aber, mit preg_replace sei es sicherer, denn so genau weiss man ja nie, wie es im HTML-Code aussieht.
Aber die obere Lösung funktioniert und ich werde erst einmal dabei bleiben.

viele Dank noch mal :-)
 
Wenn du ganz sicher sein willst, dass es geht, dann schau dir mal die Klassen XMLReader und XMLWriter an. Damit kannst du ermitteln, wo Anchor-Tags sind und sie dann dort entsprechend bearbeiten. Das ist sehr sauber, aber wird die Rechenleistung etwas stärker fordern.
 
Nein, es reicht schon, wenn das HTML valide ist. Anzumerken ist aber, dass in XML das kaufmännische Und als Symbol für Referenzen verwendet wird und somit in normalen HTML zu Fehlern führt.
 
Das glaub ich nicht, denn sowas hier ist Valide und lässt den Parser aussteigen:
HTML:
<img src="foo.jpg">

<ul>
<li>Foo
<li>Bar
<li>Baz
</ul>

Wenn irgendwelche Scripte kommen die nicht <![CDATA[ ]]> dort eingebettet sind wirds auch Problematisch.
 
Mh, für mich ist das nicht valide, aber dass ist eben der Holzhackerstil, den HTML zulässt. Da ich immer valides XHTML schreibe, geht bei mir das Validieren, Schreiben und Lesen mittels des XML-Parsers.
 
Mh, für mich ist das nicht valide, ...
... zumal ein Validator gar nicht wüsste, gegen welche Regeln er validieren soll.

Davon abgesehen kann die DOMDocument-Klasse auch mit Quirks-Dokumenten umgehen, wenn sie mit der loadHTML- oder loadHTMLFile-Methode geladen werden.
Vermutlich ist diese Diskussion aber "out of topic", da bereits eine funktionsfähige Lösung vorliegt.
 
Zurück