Re: PHP RegEx <a name='asdf'><img></a>
Hi
Beim umwandeln in RichText lässt du ein
$string = '<a name="asdf"><img src="anchor.png"></a>';
$new_string = $str_replace('<img src="anchor.png">', '', $string)
Das sollte klappen da es ja nur um das Ankerbild geht.
Beim wieder einlesen des Ankers wird es schon etwas komplizierter da wir ja nicht in jeden Link dasn anchor.png einfügen dürfen.
Hier wäre es gut wenn die Anchors immer die selbe Form haben und sich von den normalen Links unterscheiden. Dann kann man das mit einem preg_replace machen.
$replaceString = '{tempInhalt}';
$neuString = '<a name="asdf"></a>';
preg_match_all('/<a name="(\w+)"></a>/i', $neuString, $match);
$tempString = preg_replace('/(<a name="\w+"></a>)/i', '<a name=' . $replaceString . '><img src="anchor.png"></a>', $neuString);
for ( $i=0; $i<count($match); $i++ ) {
$string = str_replace($replaceString, $match[$i], 1);
}
Erklärung:
Mit dem preg_match_all lesen wir erst die ganzen links für die Ankerpunkte aus. Danach ersetzen wir die Links mit dem Ankerbild. Nun fehlen uns natürlich die ankerlinks die wir aber durch die Schleife wieder einfügen.
Geht bestimmt och eleganter ich weiß z.b. das es zurückreferenzierte preg_replace gibt. Mit denen könnte man das in einem Preg_replace alles abhandeln. Aber ob das dann wirklich schneller ist, wage ich zu bewzeifeln da preg_match und preg_replace doch sehr langsame, wenn auch mächtige Instrumente sind.
Ich habs nur schnell runtergehakt da ich gleich weg muß. Aber der Ansatz sollte zumindest veranschaulichen das es funktionieren kann.
Gruß Lamer