Salut,
Je reviens sur un sujet abordé ici il y a assez longtemps, que Jacques
avait magistralement solutionné. J'arrive aux limites de sa solution, et
je ne sais pas trop comment y remédier : problème de performance et de
mémoire.
Rappel des faits :
J'ai différents textes (messages de forums, articles, données texte ou
venant de BdD, etc.) où il faut transformer certains mots en liens.
La difficulté, à l'époque, consistait à ne pas transformer les mots déjà
contenus dans des liens, ou dans des balises html (comme dans le alt de
la balise img par exemple).
Ce fût résolu ainsi :
$CF_botanistes_id["Edward Frederick Anderson"] =
"Anderson__Edward_Frederick";
$CF_botanistes_id["Charles Lemaire"] = "Lemaire__Charles";
$CF_botanistes_id["George Engelmann"] = "Engelmann__George";
/* etc... il peut y en avoir des centaines ou des milliers */
$CF_botanistes_pipe = "Edward Frederick Anderson|Charles Lemaire|George
Engelmann";
function cf_encyclo_mklink_botanistes($rem) {
global $CF_botanistes_id;
if ($rem[2] != '')
return $rem[2];
if ($rem[3] != '')
return $rem[3];
return $rem[4].'<a href="/encyclo/'.$CF_botanistes_id[$rem[5]].'"
class="lien_botanique">'.$rem[5].'</a>'.$rem[6];
}
function cf_ajoute_liens_botanistes($texte) {
global $CF_botanistes_pipe;
return
preg_replace_callback('/((<a.*\/a>)|(<.*>)|(\W|^)('.$CF_botanistes_pipe.')(\W|$))/Ui',
'cf_encyclo_mklink_botanistes', $texte);
}
// Utilisation :
$texte = "Voir la bio de Charles Lemaire, botaniste réputé.";
echo cf_ajoute_liens_botanistes($texte); // affiche le texte avec le nom
du botaniste cliquable, dirigeant vers sa bio.
Problème : j'ai des erreurs PHP de mémoire maxi atteinte, car mes
variables contenant les textes à chercher (séparés par des pipes |)
deviennent TRÈS grandes. Je les ai d'abord coupées en plusieurs, mais ça
devient complexe à gérer.
Quelqu'un saurait comment solutionner ce problème ?
Merci pour votre aide
Yann
--
__________________________________________________________
Yann Cochard : http://yanncochard.com/
Au Cactus Francophone : http://www.cactuspro.com/
Kaella, Knoppix Linux Azur : http://kaella.linux-azur.org/
Linux-Azur : http://www.linux-azur.org
Désinscriptions: http://www.linux-azur.org/liste.php3
**** Pas de message au format HTML, SVP ****