L'objectif est de tirer de la base un mot, ou groupe de mots, de le
comparer à un texte, et d'ajouter au mot, ou groupe de mot, trouvé dans
ce texte l'url correspondant à celui de la base.
- Il faut que le mot trouvé dans le texte soit un mot entier, et non
partie de mot.
Actuellement : si j'ai Ist (venant de la base) à retrouver dans un texte
où il y a "touriste", j'obtiens un "tour<a href...>ist</a>e" ce qui ne
me convient évidemment pas.
- il faut que la correspondance puisse se faire également si le mot du
texte est suivi d'un caractère de ponctuation ou précédé d'une apostrophe.
Exemple : le mot à retrouver est "île de Hvar". Je veux pouvoir le
retrouver dans un texte où il y aurait "d'île de Hvar", "Ile de Hvar",
"île de Hvar,", "île de Hvar;", etc.
J'ai bien essayé de comprendre la doc mais je n'y parviens pas.
L'ensemble du code est le suivant:
function liens_auto($texte) {
$query_liens_auto = "SELECT id_article, titre FROM spip_articles as
liens WHERE statut='publie'";
$result_liens_auto = spip_query($query_liens_auto);
while($row_liens = mysql_fetch_array($result_liens_auto))
{
$texte=eregi_replace(
$row_liens["titre"],
'<a
href="article.php3?id_article='.$row_liens["id_article"].'">'.$row_liens["titre"].'</a>',
$texte
);
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
CrazyCat
ADB wrote:
L'ensemble du code est le suivant: function liens_auto($texte) { $query_liens_auto = "SELECT id_article, titre FROM spip_articles as liens WHERE statut='publie'"; $result_liens_auto = spip_query($query_liens_auto); while($row_liens = mysql_fetch_array($result_liens_auto)) { $texte=eregi_replace( $row_liens["titre"], '<a href="article.php3?id_article='.$row_liens["id_article"].'">'.$row_liens["titre"].'</a>', $texte ); }
Le problème vient du fait que tu utilises un outil de remplacement de manière bête et méchante (en toute amitié), c'est à dire que ton système agit ainsi: remplace toute occurence de $row_liens["titre"] par un lien formaté dans la chaine $texte. Donc, tu ne travailles que sur des chaines de caractères. Or, eregi_replace permet d'utiliser les expressions régulières, donc il faudrait que tu ne remplace non pas $row_liens["titre"] mais quelque chose comme "début de mot + $row_liens["titre"] + fin de mot" ce qui doit donner quelque chose comme 'b'.$row_liens["titre"].'b'
Je ne suis pas bien sur que le premier b fonctionnera si ton mot-clé est en début de texte, mais il faudra un peu que tu cherches dans les expressions régulières.
-- Tout sur les eggdrops http://www.c-p-f.org ML @
ADB wrote:
L'ensemble du code est le suivant:
function liens_auto($texte) {
$query_liens_auto = "SELECT id_article, titre FROM spip_articles as
liens WHERE statut='publie'";
$result_liens_auto = spip_query($query_liens_auto);
while($row_liens = mysql_fetch_array($result_liens_auto))
{
$texte=eregi_replace(
$row_liens["titre"],
'<a
href="article.php3?id_article='.$row_liens["id_article"].'">'.$row_liens["titre"].'</a>',
$texte
);
}
Le problème vient du fait que tu utilises un outil de remplacement de
manière bête et méchante (en toute amitié), c'est à dire que ton système
agit ainsi:
remplace toute occurence de $row_liens["titre"] par un lien formaté dans
la chaine $texte.
Donc, tu ne travailles que sur des chaines de caractères.
Or, eregi_replace permet d'utiliser les expressions régulières, donc il
faudrait que tu ne remplace non pas $row_liens["titre"] mais quelque
chose comme "début de mot + $row_liens["titre"] + fin de mot"
ce qui doit donner quelque chose comme 'b'.$row_liens["titre"].'b'
Je ne suis pas bien sur que le premier b fonctionnera si ton mot-clé
est en début de texte, mais il faudra un peu que tu cherches dans les
expressions régulières.
--
Tout sur les eggdrops
http://www.c-p-f.org
ML @ eggdrop_fr@yahoogroupes.fr
L'ensemble du code est le suivant: function liens_auto($texte) { $query_liens_auto = "SELECT id_article, titre FROM spip_articles as liens WHERE statut='publie'"; $result_liens_auto = spip_query($query_liens_auto); while($row_liens = mysql_fetch_array($result_liens_auto)) { $texte=eregi_replace( $row_liens["titre"], '<a href="article.php3?id_article='.$row_liens["id_article"].'">'.$row_liens["titre"].'</a>', $texte ); }
Le problème vient du fait que tu utilises un outil de remplacement de manière bête et méchante (en toute amitié), c'est à dire que ton système agit ainsi: remplace toute occurence de $row_liens["titre"] par un lien formaté dans la chaine $texte. Donc, tu ne travailles que sur des chaines de caractères. Or, eregi_replace permet d'utiliser les expressions régulières, donc il faudrait que tu ne remplace non pas $row_liens["titre"] mais quelque chose comme "début de mot + $row_liens["titre"] + fin de mot" ce qui doit donner quelque chose comme 'b'.$row_liens["titre"].'b'
Je ne suis pas bien sur que le premier b fonctionnera si ton mot-clé est en début de texte, mais il faudra un peu que tu cherches dans les expressions régulières.
-- Tout sur les eggdrops http://www.c-p-f.org ML @
ADB
ADB wrote:
L'ensemble du code est le suivant: function liens_auto($texte) { $query_liens_auto = "SELECT id_article, titre FROM spip_articles as liens WHERE statut='publie'"; $result_liens_auto = spip_query($query_liens_auto); while($row_liens = mysql_fetch_array($result_liens_auto)) { $texte=eregi_replace( $row_liens["titre"], '<a href="article.php3?id_article='.$row_liens["id_article"].'">'.$row_liens["titre"].'</a>',
$texte ); }
Le problème vient du fait que tu utilises un outil de remplacement de manière bête et méchante (en toute amitié), c'est à dire que ton système agit ainsi: remplace toute occurence de $row_liens["titre"] par un lien formaté dans la chaine $texte. Donc, tu ne travailles que sur des chaines de caractères. Or, eregi_replace permet d'utiliser les expressions régulières, donc il faudrait que tu ne remplace non pas $row_liens["titre"] mais quelque chose comme "début de mot + $row_liens["titre"] + fin de mot" ce qui doit donner quelque chose comme 'b'.$row_liens["titre"].'b'
Je ne suis pas bien sur que le premier b fonctionnera si ton mot-clé est en début de texte, mais il faudra un peu que tu cherches dans les expressions régulières.
Merci de ta rééponse. Je vais fouiller et tâcher de comprendre.
ADB
ADB wrote:
L'ensemble du code est le suivant:
function liens_auto($texte) {
$query_liens_auto = "SELECT id_article, titre FROM spip_articles as
liens WHERE statut='publie'";
$result_liens_auto = spip_query($query_liens_auto);
while($row_liens = mysql_fetch_array($result_liens_auto))
{
$texte=eregi_replace(
$row_liens["titre"],
'<a
href="article.php3?id_article='.$row_liens["id_article"].'">'.$row_liens["titre"].'</a>',
$texte
);
}
Le problème vient du fait que tu utilises un outil de remplacement de
manière bête et méchante (en toute amitié), c'est à dire que ton système
agit ainsi:
remplace toute occurence de $row_liens["titre"] par un lien formaté dans
la chaine $texte.
Donc, tu ne travailles que sur des chaines de caractères.
Or, eregi_replace permet d'utiliser les expressions régulières, donc il
faudrait que tu ne remplace non pas $row_liens["titre"] mais quelque
chose comme "début de mot + $row_liens["titre"] + fin de mot"
ce qui doit donner quelque chose comme 'b'.$row_liens["titre"].'b'
Je ne suis pas bien sur que le premier b fonctionnera si ton mot-clé
est en début de texte, mais il faudra un peu que tu cherches dans les
expressions régulières.
Merci de ta rééponse. Je vais fouiller et tâcher de comprendre.
L'ensemble du code est le suivant: function liens_auto($texte) { $query_liens_auto = "SELECT id_article, titre FROM spip_articles as liens WHERE statut='publie'"; $result_liens_auto = spip_query($query_liens_auto); while($row_liens = mysql_fetch_array($result_liens_auto)) { $texte=eregi_replace( $row_liens["titre"], '<a href="article.php3?id_article='.$row_liens["id_article"].'">'.$row_liens["titre"].'</a>',
$texte ); }
Le problème vient du fait que tu utilises un outil de remplacement de manière bête et méchante (en toute amitié), c'est à dire que ton système agit ainsi: remplace toute occurence de $row_liens["titre"] par un lien formaté dans la chaine $texte. Donc, tu ne travailles que sur des chaines de caractères. Or, eregi_replace permet d'utiliser les expressions régulières, donc il faudrait que tu ne remplace non pas $row_liens["titre"] mais quelque chose comme "début de mot + $row_liens["titre"] + fin de mot" ce qui doit donner quelque chose comme 'b'.$row_liens["titre"].'b'
Je ne suis pas bien sur que le premier b fonctionnera si ton mot-clé est en début de texte, mais il faudra un peu que tu cherches dans les expressions régulières.
Merci de ta rééponse. Je vais fouiller et tâcher de comprendre.