phpbar.de logo

Mailinglisten-Archive

[php] BBCode: Wie sinnvoll parsen?

[php] BBCode: Wie sinnvoll parsen?

Seong-Min Kang kang at respice.de
Don Sep 16 17:01:32 CEST 2004


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