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 ****

Répondre à