Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
La façon la plus simple de faire implique que le paramètre dans l'adresse soit le même que le mot recherché :
function lien_mot_cle($text)
{
$mot_clef_cherche = array("/(babar)/i", "/(zorro)/i");
$text = preg_replace($mot_clef_cherche, "[url=nomdomaine.extension/page.php?definition=$1]$1[/url]", $text);
return $text;
}Et il faudra faire un strtolower dans le fichier cible pour mettre en minuscule le mot cherché.
Petit soucis qui reste : si le mot cherché est inclus dans un autre, comme "tu" dans "lecture", un lien sera créé sur le "tu".
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Je ne parviens pas à utiliser strtolower comme je le voudrais.
Si je converti la variable $text en minuscule pour rechercher le mot clé, la sortie se fait tout en minuscule... (normal)
Comment faire pour que la variable $text soit convertie en minuscule juste le temps de la fonctionv"lien_mot_cle" puis ressorte au format original avec les majuscules si il y en avait?
Sinon j'ai essayé ce que tu m'as dit:
$mot_clef_cherche = array("/(babar)/i", "/(zorro)/i");Mais ca ne fait rien.
Qu'est ce que les "/" et "i" sont censés faire?
Hors ligne
Le strtolower est à utiliser après, dans la page de destination du lien pour mettre en minuscule le paramètre.
Il est normal que ça ne fasse rien si tu n'as pas ces deux termes dans les messages affiché. Je l'ai testé chez moi en local avec les termes "je" et "tu", est ça fonctionnait très bien. Tu as bien remplacé toute la fonction par le code dans mon dernier message ?
Les "/" sont pour délimiter l'expression régulière, le "i" est pour dire "insensible à la case" (pour ne pas se soucier des majuscules / minuscules"), et les parenthèses pour expliquer à la fonction ce qu'elle doit mettre dans $1. Pour plus de détails je te conseillerai de trouver un cours sur les expressions régulière.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Ok.. Déjà, on est passé sur ma solution "globale".. 
Ca progresse...
La fonction proposée ci-dessus par fanf73 semble correcte (à part que les parenthèses sont inutiles).
Deux remarques :
- puisques tu précises /i (insensible à la casse), pourquoi parles-tu de strtolower ? (là, j'ai pas suivi..). Ce paramètre est justement là pour éviter le strtolower...
- je rajouterais le paramètre /s si j'étais vous (donc /is)...
Hors ligne
Lorsque j'ajoute "/i" (ou "/is") comme vous me l'indiquez, c'est à dire:
array("/babar/i", "/zorro/i");
(Ou avec les parenthèses)
-> le lien n'est plus ajouté.
Le mot s'affiche normal sans lien et pas d'erreur.
Hors ligne
@Mpok : Si tu as un "Babar" dans la phrase, le lien contiendra "Babar", d'où le besoin de tout mettre en minuscule dans la page de destination pour avoir un paramètre propre.
Les parenthèses sont inutiles ?
Faudrait que je teste pour voir.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Si je converti toute la variable $text en petit avec strtolower, la oui j'arrive à toujours obtenir un lien sur les mots clés. Mais le texte qui ressorte est entièrement en minuscule... bof bof.
Si j'ajoute les paramètres "i" à l'expression régulière recherchée: "/babar/i" Plus rien n'est trouvé...
J'ai pourtant ajouté cela comme vous me l'avez indiqué.
(J'ai essayé avec et sans parenthèse, ca ne marche pas plus)
Dernière modification par tribuforex (26-10-2009 14:39:54)
Hors ligne
C'est bizarre, j'ai testé la fonction postée dans le message #26 et elle fonctionnait nickel. Vérifie qu'il n'y pas de différence entre celle-ci et celle que tu utilises.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Le $1 fait que l'on récupère le mot clef cherché dans le lien.
La variable mot_clef_remplace a été supprimé mais j'en ai besoin car mes liens ne sont pas de ce style.
Voila ce que je mets:
function lien_mot_cle($text)
{
$mot_clef_cherche = array("/(babar)/i", "/(zorro)/i");
$mot_clef_remplace = array("apprendre_babar", "zorro-cavalier");
$text = preg_replace($mot_clef_cherche, "[url=http://XXXXXXX.XX/'.$mot_clef_remplace[$i].'.php]$1[/url]", $text);
return $text;
}Mais le lien qui est créé sur le mot clé est:
http://xxxxxxx.xx/...phpComment faire pour que le lien soit la variable $mot_clef_remplace dans l'ordre: "apprendre_babar" pour le mot "babar" et autres?
Hors ligne
AAA ben oui!! La boucle!! Elle a été supprimée du coup.
Maintenant ca marche parfaitement.
Voici le code:
function lien_mot_cle($text)
{
$mot_clef_cherche = array("/(babar)/i", "/(zorro)/i");
$mot_clef_remplace = array("apprendre_babar", "zorro-cavalier");
for ($i = 0; $i < count($mot_clef_cherche); $i++)
$text = preg_replace($mot_clef_cherche[$i], "[url=http://XXXXXXX.XX/'$mot_clef_remplace[$i]'.php]$1[/url]", $text);
return $text;
}Ainsi, si "Babar" ou "babar" est trouvé, j'ai un lien qui se met dessus avec:
http://XXXXXXX.XX/apprendre_babar.php(idem pour zorro mais avec "zorro-cavalier" en lien)
C'est extra!
Merci pour votre aide fanf73.
Salutations!
Vincent.
Hors ligne