gudn tach!
In einem Text möchte ich beim Vorkommen bestimmter Zeichen eine PHP-Funktion ausführen, so z.B. hinter jeden Link eines Artikels eine fortlaufende Nummer schreiben und diese dann am Seitenende zusammen mit dem Link noch einmal aufführen.
$i = 0;
$s = preg_replace('/(<a href=")([^"]+)("[^>]*>)(.*?)(<\/a>)/es',"'$1'.(\$link_arr[\$i][0]='$2').'$3'.(\$link_arr[\$i][1]='$4').'$5['.++\$i.']'", $s);
gewinnt vermutlich keinen schoenheitswettbewerb, sollte aber funzen.
schau dir fuers verstaendnis mal die modifier an, insb. 'e', sowie die user-comments (auch bei preg_replace() und preg_replace_callback()), die davon handeln.
ferner wird benutzt, dass
echo $foo=123;
hier das gleiche tut wie
$foo=123; echo $foo;
.
mit print_r($link_arr);
kannst du am schluss dir mal anschauen, wie $link_arr aufgebaut ist und dann entsprechend eine ausgabe schreiben, die das gewuenschte "literaturverzeichnis" erstellt.
Derzeit gehe ich davon aus, dass preg_match_all() der richtige Ansatz für mein Vorhaben ist. Allerdings half selbst ein Studium von php.net meinem Verständnis leider nicht weiter, weshalb ich hoffe hier richtig zu sein.
ja, mit preg_match_all() waers auch gegangen.
1. erst alle links suchen, in einem array samt positionen (flags entsprechend setzen) speichern,
2. anschliessend mit gewoehnlichen textbearbeitungstools (str_replace, substr, ...) noch mal ueber den string drueberjagen und an den entsprechenden stellen die zahlen einfuegen.
3. schliesslich noch das array anfuegen.
prost
seth