PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 07-07-2014 15:58:25

yule
Membre
Inscription : 24-09-2009
Messages : 35

problème depuis passage sur php 5.4 (fonction /variable)

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 type="text/css">
.highlight_word{
    background-color: pink;
}

</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

#2 08-07-2014 06:06:50

yule
Membre
Inscription : 24-09-2009
Messages : 35

Re : problème depuis passage sur php 5.4 (fonction /variable)

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

<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(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

#3 08-07-2014 08:16:17

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : problème depuis passage sur php 5.4 (fonction /variable)

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

#4 08-07-2014 09:37:47

yule
Membre
Inscription : 24-09-2009
Messages : 35

Re : problème depuis passage sur php 5.4 (fonction /variable)

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

#5 10-07-2014 01:55:18

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : problème depuis passage sur php 5.4 (fonction /variable)

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

Pied de page des forums