seth: Durchnummerierung einzelner Textpassagen

Beitrag lesen

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