Url pollué après une simple fonction

WRInaute occasionnel
Bonjour

Au passage de PHP 5.3 à PHP 5.4 chez un hébergeur du Nord pour ne pas le citer, j'a un pb sur la coloration
de mes résultats de recherche. Dès que le mot à colorer se trouve sur un url, celui-ci devient complètement pollués

Voilà ce que donne mon lien...

ht*p://www.%3Cspan%20class%3D%22highlight_word%22%3Eoption%3C/span%3Es-culinaire.ch

il me reprend du code de ma fonction.. Grr

Code:
<style type="text/css">
.highlight_word{
    background-color: pink;
}
</style> 

<?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(htmlentities(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 >";
 
?>

S'avez comment remedier à ça ? c'est lié au chgr de PHP, aux variables php sur php 5.4 ?

D'avance merci pour votre aide

Ci-dessus, le code complet que vous pouvez recopier pour essayer si nécessaire

Yule
 
WRInaute accro
Bonjour

Bah tu fais un lien HREF vers une URL dont le "contenu" est traité par ta fonction qui rajoute des span et des bidules (highlight) donc forcément ça va poser des problèmes ...

Code:
$url = highlightWords2(htmlentities(substr($url, 0, 100), $keywords));
echo"  Url : <a href='$url' target='_blank'>$url</a><br >";
 
WRInaute occasionnel
Re,

Merci mais ça ne vas toujours pas. Avec votre exemple, Il m'affiche un autre lien

pas n'importe quel lien, celui ou je test la page avec ce script ????e ht*tp://www.monsite.com/test.php

Ou mais depuis le passage a ce php 5.4 et le problème des variables Qu'on ne peux plus gérer avec le htaccess, j'ai que des soucis :evil:

Mais sur votre exemple (htmlentities) , c'est ok sur votre serveur ou c'est une réponse qui vous a sauté aux yeux en regardant mon code ?

A+
Yule
 
WRInaute accro
Non; le code que j'ai donné c'est juste pour te montrer ou se situe le problème, ce n'est pas une correction
ça m'a sauté aux yeux en lisant le code.

En résumé, imaginons que tu aies une URL :
Code:
$url="example-1.html";
Après passage via la fonction highlightWords2, tu obtiens par exemple

Code:
$url="<span class='highlightWord'>example</span>-1.html";

Et ensuite tu veux faire un lien vers URL, ce qui en HTML te donnera

Code:
<a href="<span class='highlightWord'>example</span>-1.html">Lien</a>

qui n'est pas bon du tout

En gros, tu ne dois pas traiter $url avec ta fonction
 
WRInaute occasionnel
Re,

Ok merci, j'ai mieux compris mon erreur !

en faisant ceci tout est ok puisque l'url2 ne sera pas traité par ma fonction

Code:
<?php
 $url2 = "$url";
 echo"  Url : <a href='$url2' target='_blank'>$url ok ou pas</a><br >";
?>

Donc parfait, encore merci
Cordialement
Yule
 
Discussions similaires
Haut