Mailinglisten-Archive |
Hi Nico, On 16 Sep 2004 at 16:40, Nico Haase wrote: > ich habe folgendes Problem mit BBCode: Meinen Redakteuren möchte ich > ermöglichen, Links wie im Wiki zu setzen, sodass sie bspw. einfach > "[autor]Michael Ende[/autor]" schreiben können und dann, wenn vorhanden, ein > Link zur Michael Ende-Seite angezeigt wird oder kein Link. Als spontane Antwort fällt mir hierzu das Stichwort "Regexpressions" ein. (http://de3.php.net/manual/de/ref.pcre.php) > Problem ist: Wie > parse ich den Code richtig und vor allem performant? Die Autoren stehen alle > in einer Datenbank, bestehend aus Name und ID, und jetzt bei jedem Vorkommen > von [autor]irgendwas[/autor] einen DB-Query abzusetzen wird ja ziemlich > Datenbank-lastig... Und wieder ganz spontan: <? while (preg_match ("/\[autor\](.*?)\[\/autor\]/", $text, $ergebnis) ) { $autoren[] = $ergebnis[1]; } ?> So erhältst du immerhin aller vorkommenden Autoren. Allerdings müsstest du dann erneut alle Treffer mit preg_replace () ersetzen. Du kannst allerdings statt preg_match () gleich mit preg_replace () in der while-Schleife verfahren. Allerdings müsstest du dann bereits vorher eine Liste der Autoren haben. Bei sehr vielen Autoren auch unperformant. Grüße Seong
php::bar PHP Wiki - Listenarchive