Bonjour,
je bute depuis ce matin sur un problème bête.
Je remplace la première occurence d'un mot s'il correspond au titre d'une liste dans une base données.
Avec en code :
function first_replace($c,$r,$t)
{
if(strstr($t,$c))
{
$d = str_replace(strstr($t,$c),"",$t);
$f = strstr($t,$c);
$f = substr($f,strlen($c));
return $d . $r . $f;
}
else
return $t;
}
# puis j'utilise tout ça comme ça :
function lier_au_glossaire($texte)
{
# Config
# L'identifiant (id_rubrique) de la rubrique glossaire
$id_rubrique = 2;
# Limiter l'effet du filtre à la première occurence
$eviter_doublons = 1; // 0 : afficher toutes les occurences
# On checke si l'entrée est déjà présente dans la table
# Mettre l'identifiant de la rubrique contenant le glos
$r = spip_query("SELECT id_article,titre FROM mecanismes.spip_articles WHERE statut='publie' AND id_rubrique='$id_rubrique'");
while($o = spip_fetch_array($r))
{
if($eviter_doublons == 1)
{
$texte = first_replace("$o[titre]","
$o[titre]",$texte);
}
else
{
$texte = str_replace("$o[titre]","
$o[titre]",$texte);
}
}
return $texte;
}
ça le fait, SAUF QUE : si la première occurence est dans un lien : tout pète car j'insère un lien dans un lien...
une idée?