Vous n'êtes pas identifié(e).
Bonjour,
Sur mon moteur de recherche que j'essaye de mettre en place , je mets en surbrillance le terme recherché, ça fonctionne sauf sur les liens (url)
Si le mot clef recherché est présent dans l'url, il sera mis en surbrillance avec succès, par contre le lien ne devient plus cliquable correctement (il affiche tout un bordel qui ne se déclarait pas sur php5.3, hébergé chez ovh)
exemple d'un lien avec l'utilisation de cette fonction
http://www.%3Cfont%20color%3D%22/#398F48">monsite</font>.com
</style>
<?php
// Début - Remplacer la couleur du terme recherché
function highlightWords2($string, $keyword)
{
$keywords = explode(' ', $keyword);
foreach ($keywords as $word) {
$string = str_ireplace($word, '<span class="highlight_word">'.$word.'</spans>', $string);
}
return $string;
}
// +---------- Coupure et en couleur -------------- +
$nomsite = highlightWords2(substr($nomsite, 0, 100), $keywords);
$description = highlightWords2(substr($description, 0, 400), $keywords);
$url = highlightWords2(substr($url, 0, 100), $keywords);
echo"<p><a href='$url' target='_blank'>$nomsite</strong> <br />
<a href='$url' target='_blank'>$url</a><br />$description </a></p>";
?>
D'avance merci pour votre aide
Yule
Dernière modification par yule (08-07-2014 19:55:45)
Hors ligne
Hello,
Je reviens avec un exemple de code ou vous pouvez essayer directement sur votre serveur, et voir si ça vous fait la même chose pour comprendre mon soucis
A savoir:
Au passage de la souris sur les liens (affichage imonde de l'url..) et surtout que l'url ainsi, ne peux pas renvoyer sur la bonne page..
D'avance merci pour vos tests/solutions
<?php
// les valeurs...
$keywords ="option";
$url ="http://www.option-culinaire.ch"; // ce site n'existe pas...;-)
$description ="toutes les options que j'aimerais faire fonctionner, l'option binaire ou l'option de ne rien faire";
$nomsite ="Tout savoir sur les options";
// la fonction...
function highlightWords2($string, $keywords)
{
$keywords = explode(' ', $keywords);
foreach ($keywords as $word)
{
$string = str_ireplace($word, '<span class="highlight_word">'.$word.'</span>', $string);
}
return $string;
}
// couper les mots concernés...
$nomsite = highlightWords2(substr($nomsite, 0, 100), $keywords);
$description = highlightWords2(substr($description, 0, 400), $keywords);
$url = highlightWords2(substr($url, 0, 100), $keywords);
// j'affiche le résultat...
echo"
Nomsite : <a href='$url' target='_blank'>$nomsite</a><br >
Description : $description<br >
Url : <a href='$url' target='_blank'>$url</a><br >";
?>
Hors ligne
Saluton,
Au vu des scripts, je ne vois pas comment les url ne viendraient pas à être polluées.
Rien à dire sur le script, il fait le boulot demandé, si ce n'est pas le résultat attendu c'est qu'il faudrait programmer le script pour qu'il évite de modifier tout argument href.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Re,
Ok c'est donc un peu un mystère... sur php 5.3 ok et sur php5.4 c'est pas bon...
Un indice sur quoi me tourner pour éviter de modifier mon argument href ? Rester sur du php ou partir sur du javascript ?
A+
Yule
Dernière modification par yule (08-07-2014 09:39:39)
Hors ligne
Bonjour,
Moi j'aurais plusieurs remarques à faire sur vos scripts si vous me le permettez
1)
$string = str_ireplace($word, '<span class="highlight_word">'.$word.'</spans>', $string);
déjà c'est </span> et non </spans>
2) Votre script pourrait être beaucoup plus performant avec un preg_replace en supprimant par la même occasion une bonne partie de votre code.
3) Il semblerait que la configuration de votre PHP entre les deux versions soit différente, notamment au niveau de l'encodage par défaut. De plus vous ne vous assurez pas du bon contenu et de l'encodage de vos paramètres avant leur traitement.
Notamment un url_decode($url) me semble opportun avant tout traitement spécifique sur $url.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne