ik gebruik op mijn site een functie om in een text bepaalde namen die in mijn database voorkomen te herkennen en er links van te maken, opzich een hele simpele replace functie echter zijn er 3 problemen mee.
de functie is:
de problemen zijn op dit moment:
- als de text lang is duurt het een eeuwigheid
- als er veel artiesten voorkomen in een text duurt het een eeuwigheid
- sommige artiesten hebben een klote naam (bijvoorbeeld Do, en nog een paar) waardoor woorden die niet klikbaar moeten zijn dat wel worden. vandaar dat ik er nu de length(artiest) > 5 constraint in heb gezet, maar dat is wel heel slordig.
opzich is dit laatste probleem moeilijk tot niet op te lossen, maar de andere twee wel denk ik.
iemand een suggestie voor deze functie om te optimaliseren?
de functie is:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function contrib2url($text) { global $cfg; $mysql = New mysql($cfg['hn'],$cfg['un'],$cfg['pw'],$cfg['db'],0); $mysql->query("SELECT id, artiest, cid FROM contributors WHERE cid != 0 AND artiest != '' AND LENGTH(artiest) > 5 order by id desc"); $num = $mysql->num_rows(); while($mysql->movenext()) { $naam = $mysql->getfield("artiest"); $id = $mysql->getfield("id"); $cid = $mysql->getfield("cid"); $text = preg_replace( "/(^|\s|,!|;)(".preg_quote($naam, "/").")(\s|,|!|&|$)/imS", "\\1<a href='artist.php?cid=".$cid."' class='textlink'>\\2</a>\\3", $text, 1); } return $text; } |
de problemen zijn op dit moment:
- als de text lang is duurt het een eeuwigheid
- als er veel artiesten voorkomen in een text duurt het een eeuwigheid
- sommige artiesten hebben een klote naam (bijvoorbeeld Do, en nog een paar) waardoor woorden die niet klikbaar moeten zijn dat wel worden. vandaar dat ik er nu de length(artiest) > 5 constraint in heb gezet, maar dat is wel heel slordig.
opzich is dit laatste probleem moeilijk tot niet op te lossen, maar de andere twee wel denk ik.
iemand een suggestie voor deze functie om te optimaliseren?