Mailinglisten-Archive |
Hallo, um einen Text mit Links auf Tabellen/Abbildungen versehen zu koennen, soll der Benutzer an den entsprechenden Stellen Pseudo-Tags ("[Tabelle]", bzw. "[Abb.]") einfügen. Da hierbei evtl. Tippfehler beruecksichtigt werden muessen, habe ich angefangen, mit Regular Expressions herumzuexperimentieren (absoluter Newbie). Durch "trial and error" bin ich zu folgendem Ergebnis gekommen: # kleine Auswahl $eingabe[] = "[Tabelle 1]"; $eingabe[] = "[Tabelle1]"; $eingabe[] = "[Tab 1]"; $eingabe[] = "[Tab1]"; $eingabe[] = "[Table 1]"; $eingabe[] = "[Table1]"; $eingabe[] = "[Abb. 1]"; $eingabe[] = "[Abb 1]"; $eingabe[] = "[Abb.1]"; $eingabe[] = "[Ab. 1]"; $eingabe[] = "[Ab.1]"; $eingabe[] = "[Ab 1]"; $eingabe[] = "[Ab1]"; $count = 0; while ($eingabe[$count]) { # so siehts vorher aus echo $eingabe[$count] ."<br>\n"; # Korrektur falscher Tabellen-"Tags".... $eingabe[$count] = eregi_replace( '\[((tab)([a-z]+)?[\.]?)([ ]?)([0-9])\]', '[Tabelle \\5]', $eingabe[$count] ); # ....das selbe fuer die Abbildungs-"Tags" $eingabe[$count] = eregi_replace( '\[([^t][ab]([a-z]+)?[\.]?)([ ]?)([0-9])\]', '[Abb. \\4]', $eingabe[$count] ); # Aus den Pseudo-Tags werden Links # (OK, haette ich schon oben erledigen koennen) $eingabe[$count] = ereg_replace( '\[([A-Za-z]+)([\.]?)([ ]?)([0-9])\]', '<a href="\\1_\\4"><b>\\1\\2 \\4</b></a>', $eingabe[$count] ); # so siehts nachher aus echo $eingabe[$count] ."<br>\n"; $count++; } Kar, alles ist damit nicht abgedeckt, z.B. wuerde aus "abelle" "Abb.".... Ich frage mich jetzt nur, ob sich das Ganze nicht eleganter und vor allem effektiver machen liesse. Vielen Dank fuer Hinweise. Ausnahmsweise bitte kein RTFM, weil ich (zumindest im Moment) nicht tiefer in die Materie einsteigen will und mit dieser Loesung leben kann. Wuerde mich trotzdem interessieren.... ;-) Gruss, Martin -- Bitte um Empfangsbestaetigung.... ;-)
php::bar PHP Wiki - Listenarchive