phpbar.de logo

Mailinglisten-Archive

[php] Smilies durch Bilder ersetzen

[php] Smilies durch Bilder ersetzen

"patrick müller (aka elias)" ghostwwinside at gmx.net
Mon Mar 22 20:01:55 CET 2004



Sebastian "Marduk" Pölsterl wrote:

> Hallo!
> 
> Der Sachverhalt sieht folgendermaßen aus:
> Dem Benutzer ist es möglich Smilies selbst einzutragen (werden in DB 
> gespeichert) nun sollen die Smilies (zB ':D') mit Bildern ersetzt werden.
> Ich hab das bis jetzt mal mit preg_replace versucht, allerdings muss man 
> ja vorher noch zeichen wie ],[,?,* etc. mit einem \ versehen, da die 
> sonst den preg_replace Befehl stören. Bei mit sieht das so aus:
> 
> <snip>
> $query = $db->query("SELECT * FROM nm_smilies ORDER BY shortcut DESC");
>   while($row = $db->fetch_array($query))
>   {
>     $path = $config["scripturl"]."/images/smilies/$row[url]";
>     $size = @getimagesize($path);
>     $input .= " ";
>     
>     $bad_pattern = array("/(\\\)/",
>                          "/(\[)/",
>                          "/(\])/",
>                          "/(\()/",
>                          "/(\))/",
>                          "/(\{)/",
>                          "/(\})/",
>                          "/(\/)/",
>                          "/(\^)/",
>                          "/(\.)/",
>                          "/(\|)/",
>                          "/(\*)/",
>                          "/(\+)/",
>                          "/(\?)/");
> 
>     $row["shortcut"] = 
> preg_replace($bad_pattern,"\\\\$1",$row["shortcut"]);
> 
>     $input = preg_replace("/(".$row["shortcut"].")[^\/]/", "<img 
> src=\"$path\" $size[3] alt=\"$row[description]\" border=\"0\" />", $input);
>   }
> </snip>
> 
> Mein Problem ist jetzt, dass diese Methode SEHR zeitaufwendig ist (ohne 
> 0.2s, mit >5s).
> 
> Was kann man daran also noch besser machen?
> Freue mich über jede Anregung!
> 
> Gruß
> Sebastian Pölsterl

vielleicht hilft

preg_quote()

?

php::bar PHP Wiki   -   Listenarchive