[PHP] str_replace bzw preg_replace bei langen texten?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [PHP] str_replace bzw preg_replace bei langen texten?

    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:
    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);
            }
        }

    (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?
    [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

  • #2
    warum zeilenweise und nicht der gesamte text auf einmal?

    warum nicht nur str_replace?

    warum mit preg_match vorher nachschauen?

    wenn schon nachschauen, warum dann nicht mit strpos?

    PHP-Code:
    $smilies = array(':)' => 'grins'';)' => 'zwinker');
    $alt 'hallo :), du bist ja voll doof ;)';
    $neu str_replace(array_keys($smilies), $smilies$alt); 
    so irgendwie?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      ja, so irgendwie

      ok, geniale lösung, vielen dank...
      [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

      Kommentar

      Lädt...
      X