Ich spiele mit dem Gedanken, ein Kommentarsystem für meine Galerie einzubaun. Das ist nichts aufregendes, habe ich schon 1, 2 mal gemacht und ist kein großes Hindernis.
Doch ich möchte für die Smileyfetischisten auch smileys einbaun (eh nur 5-10, die wichtigsten halt).
Um den Text mit Bildern auszutauschen, würde ich den Text mit explode("\n", $lines); aufspalten und dann mit foreach() jede Zeile durchgehen. Die Smileys würde ich aus der Datenbank abrufen und ebenfalls in einem Array speichern und dann wie folgt vorgehen:
(das preg_match würde ich machen, damit der Parser die Zeile sofort überspringen kann, falls nichts drin ist)
Ist diese Lösung ok? Wird das normal anders gemacht? Weil wenn ich z.B. 100 Smileys (ist ja in manchen Foren keine Seltenheit) habe und jemand schreibt 50 Zeilen, dann sind das 5000 Schleifendurchgäng, und wenn womöglich die Zeilen auch noch lang sind, ist das nicht relativ anstrengend für die CPU? Gibt es was schnelleres?
Doch ich möchte für die Smileyfetischisten auch smileys einbaun (eh nur 5-10, die wichtigsten halt).
Um den Text mit Bildern auszutauschen, würde ich den Text mit explode("\n", $lines); aufspalten und dann mit foreach() jede Zeile durchgehen. Die Smileys würde ich aus der Datenbank abrufen und ebenfalls in einem Array speichern und dann wie folgt vorgehen:
PHP-Code:
// Array mit den Zeilen durchgehen
foreach($lines as $lineno => $linecontent){
// Array mit den Smileys durchgehen
foreach($smileys as $smileystr => $smileypic){
// falls es einen Treffer gibt (z.B.: :P, :D)
if(preg_match('/' . $smileystr . '/', $linecontent){
// den Treffer austauschen
$lines[$lineno] = str_replace($smileystr, $smiley, $linecontent);
}
}
}
Ist diese Lösung ok? Wird das normal anders gemacht? Weil wenn ich z.B. 100 Smileys (ist ja in manchen Foren keine Seltenheit) habe und jemand schreibt 50 Zeilen, dann sind das 5000 Schleifendurchgäng, und wenn womöglich die Zeilen auch noch lang sind, ist das nicht relativ anstrengend für die CPU? Gibt es was schnelleres?
Kommentar