Mailinglisten-Archive |
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