Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1380 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  REGLE: Surligner un mot dans une page

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

REGLE: Surligner un mot dans une page

n°1505822
izbing2
Posté le 22-01-2007 à 11:26:28  profilanswer
 

Encore une fois désolé de vous embêter avec mes soucis (mais j'ai beau chercher  :??:)
 
J'aimerais surligner un mot dans page.
Bref je recherche un moyen de trouver un mot dans un page et d'y ajouter des balises autours.
 
Quelqu'un pourrait-il m'aiguiller sur le droit chemin ? (je ne demande pas non plus le code tout fait :p)
 
Merci beaucoup


Message édité par Elmoricq le 23-09-2009 à 22:34:56
mood
Publicité
Posté le 22-01-2007 à 11:26:28  profilanswer
 

n°1505827
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-01-2007 à 11:39:36  profilanswer
 

lecture de ta page html, fonction de recherche d'une occurence + modification du source html avec ajout css background-color sur le mot en question, puis affichage.

n°1505836
izbing2
Posté le 22-01-2007 à 11:44:24  profilanswer
 

Hum.
Donc si je comprends bien,
Une fois la page généré j'appelle un autre script qui lui va relire la page et faire les modif pour afficher les résultat ?
Ou je peut faire cela dans la même page ?


Message édité par izbing2 le 22-01-2007 à 11:44:35
n°1505861
leflos5
On est ou on est pas :)
Posté le 22-01-2007 à 12:58:58  profilanswer
 

T'as des pages qu'elle soient statiques ou générées dynamiquement, là tu appelles la page que tu veux sauf qu'au lieu de l'afficher, tu récupères son contenu (tampon, file_get_contents...) que tu parses pour trouver ce que tu cherches et tu rajoutes simplement des balises autour (preg_match_all) et t'envoies le tout au client :spamafote:
 
Donc ta page c'est ta page :spamafote: ton script doit appeler ta page et chercher les occurences dans son contenu  :)

n°1505913
izbing2
Posté le 22-01-2007 à 14:54:06  profilanswer
 

Merci beaucoup à vous 2.
Mais je pense faire comme ceci :
 
En fait les résultats surligné sont obligatoirement dans un array.
Je vais donc utiliser implode, ensuite regex pour rajouter les balises, et explode pour recréer le tableau avant de balancer les infos...
 
Vous en pensez quoi ?

n°1505917
soju
One shot !
Posté le 22-01-2007 à 15:08:46  profilanswer
 

pas besoin de implode/explode, vu que preg_replace accepte les tableaux en arguments

Citation :

Si subject est un tableau, alors l'opération sera appliquée à chacun des éléments du tableau, et le tableau sera retourné.

n°1505944
izbing2
Posté le 22-01-2007 à 15:48:15  profilanswer
 

Merci beaucoup soju, je test tout ça et je REGLE le topic si c'est bon :)

n°1505950
izbing2
Posté le 22-01-2007 à 15:57:50  profilanswer
 

Citation :


while( $result = mysql_fetch_array($req))
{
 
$imp2 = preg_replace("# ".$recherche." #", "<span class=\"surligne\">".$recherche."</span>", $result);
echo $imp2[nom];


 
??? Qu'est ce que va pas ?!?

n°1505959
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-01-2007 à 16:08:01  profilanswer
 

y'a quoi dans $recherche?

n°1505981
soju
One shot !
Posté le 22-01-2007 à 16:49:39  profilanswer
 

pas très propre, tu fais le replace seulement sur un mot entouré d'espace, si le mot est en début ou fin ça ne marche pas.
essaye avec ça :

Code :
  1. preg_replace('#(^|\s)('.$recherche.')(\s|$)#', '\1<span class="surligne">\2</span>\3', $result);

mood
Publicité
Posté le 22-01-2007 à 16:49:39  profilanswer
 

n°1505995
MagicBuzz
Posté le 22-01-2007 à 17:22:17  profilanswer
 

pkoi ne pas simplement utiliser replace() ? (ou str_replace() ou chais plus quoi, enfin... le replace de base quoi...)

n°1505999
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-01-2007 à 17:39:33  profilanswer
 

+1...
Les regexs caylemal...

n°1506002
soju
One shot !
Posté le 22-01-2007 à 17:43:43  profilanswer
 

si la recherche porte sur des mots entiers, le str_replace n'est pas adapté...

n°1506005
MagicBuzz
Posté le 22-01-2007 à 17:44:54  profilanswer
 

pour info, ta recherche, tu la fais avec quoi ? (parceque j'ai un sérieux doute sur le "mots entiers" )

n°1506010
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-01-2007 à 17:58:14  profilanswer
 

soju a écrit :

si la recherche porte sur des mots entiers, le str_replace n'est pas adapté...


et pourquoi donc???  [:roane]

n°1506030
MagicBuzz
Posté le 22-01-2007 à 19:13:57  profilanswer
 

parceque s'il cherche "exactement" eau il ne veut pas avoir un troupeau de blaireaux qui déboulent.
mais je doute très fortement que son système de recherche fasse déjà la différence donc...

n°1506088
izbing2
Posté le 22-01-2007 à 22:10:20  profilanswer
 

Je la fais soit avec LIKE (avec critère) soit en FULLTEXT (et je compte restructurer tout ça en REGEXP)
 
Sinon j'ai trouver comment faire ^^ C'est pas très compliqué et pour ceux que ça interresse voici le code :
 

Citation :


$mot1 ="#".$recherche."#i";
$replace ="<span class=\"surligne\">".$recherche."</span>";
$result = preg_replace($mot1, $replace, $result);


 
Merci à vous tous

n°1506177
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-01-2007 à 09:10:27  profilanswer
 

MagicBuzz a écrit :

parceque s'il cherche "exactement" eau il ne veut pas avoir un troupeau de blaireaux qui déboulent.


izbing2 a écrit :

Citation :


$mot1 ="#".$recherche."#i";
$replace ="<span class=\"surligne\">".$recherche."</span>";
$result = preg_replace($mot1, $replace, $result);



 :whistle:  :whistle:  

n°1506178
sielfried
Posté le 23-01-2007 à 09:18:21  profilanswer
 

soju a écrit :

pas très propre, tu fais le replace seulement sur un mot entouré d'espace, si le mot est en début ou fin ça ne marche pas.
essaye avec ça :

Code :
  1. preg_replace('#(^|\s)('.$recherche.')(\s|$)#', '\1<span class="surligne">\2</span>\3', $result);



 
\b est fait pour ça.
 
preg_replace('#\b' . $recherche. '\b#i', '<span class="surligne">\0</span>', $result);


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1506214
izbing2
Posté le 23-01-2007 à 10:31:06  profilanswer
 


 
Quoi ???
 
Si j'ai une recherche multicritère (Mot entier, et mot non entier... Je peux très bien chercher eau et tombe sur blaireaux...

n°1506220
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-01-2007 à 10:38:24  profilanswer
 

ça dépend de ce qu'il y a dans $recherche mais admettons que tu aies

Code :
  1. $recherche='eau';


la phrase

Citation :

le beau blaireau boit de l'eau à fontainebleau


tu vas te retrouver avec

Citation :

le b<span class="surligne">eau</span> blair<span class="surligne">eau</span> boit de l'<span class="surligne">eau</span> à fontainebl<span class="surligne">eau</span>


soit exactement ce qu'aurait fait str_replace [:spamafote]


Message édité par anapajari le 23-01-2007 à 10:39:36
n°1506226
MagicBuzz
Posté le 23-01-2007 à 10:42:58  profilanswer
 

(de façon plus simple et certainement plus rapide :D)

n°1506257
izbing2
Posté le 23-01-2007 à 11:39:33  profilanswer
 

Merci :)

n°1506445
afbilou
pouet your life
Posté le 23-01-2007 à 17:58:10  profilanswer
 

mot entier : preg_replace('#\beau\b#', '<span>eau</span>', $texte)
recherche standard : str_replace

n°1625176
drishou
Posté le 17-10-2007 à 09:38:52  profilanswer
 

J'ai un petit souci avec cette méthode, si le mot recherché est dans une balise html genre <img src="champignon.jpeg" /> et que l'on cherche champignon, le surlignage se colle dans la balise html du coup plus d'image et un bout de code qui apparait.

n°1625177
drishou
Posté le 17-10-2007 à 09:41:01  profilanswer
 

De plus le preg_replace() me mange un caractère de chaque coté du mot.
 

Code :
  1. $replacements='<span style="background-color:#ffe200;">$0</span>';
  2. $pattern='#(^|\b|[[:space:]])(\W'.$_SESSION['rechercher'].')($|\s|[[:punct:]])#i';
  3. $contenu_t=preg_replace($pattern, $replacements, $resultatFiche->contenu);


Message édité par drishou le 17-10-2007 à 09:43:16
n°1926240
fabrice882​50
Posté le 23-09-2009 à 21:14:41  profilanswer
 

bonsoir, desolé de déteré le sujet mais il correspond a se que je voudrai faire avec mon moteur de recherche.
je souahiterai donc surligner dans mes resultat le ou les mos qui ont été rentrer dans la recherche. Le hic c'est que je voi pas comment l'adapté a mon code.  
si vous pouviez me donner un coup de main.
voici mon code : (je voudrai surligner les mots qui se trouveraient dans les champs $ref et $alt)
 

Code :
  1. function search()
  2.           {
  3. $champ=$_POST['rechercherpar'];
  4. $mot=$_POST['mot_cle'];
  5. echo '<img src="../images/fleche.png" alt="Les photos trouvées" class="imggauche" />
  6. Vous rechercher portait sur : <span class="surljaune"> '.$mot.' </span> <br/>Pour le type de galerie : <span class="surljaune"> '.$champ. ' </span><br/>Voici les photos trouvées en fonction de votre recherche.<div class="clear"></div>';
  7. if($champ == 'Toutes les galeries' )
  8. {
  9. $resultat=mysql_query("SELECT * FROM IWgalerie WHERE match(`ref`,`exemple`,`alt`) against ('$mot') ORDER BY type, ref, alt  ASC" );
  10. }
  11. elseif($champ != 'Toutes les galeries' ){
  12. $resultat=mysql_query("SELECT * FROM IWgalerie WHERE type='$champ' AND match(`ref`,`exemple`,`alt`) against ('$mot') ORDER BY type ASC" );
  13. }
  14.    while($ligne = mysql_fetch_array($resultat))
  15.           {
  16.    $ref=$ligne['ref'];
  17.    $alt=$ligne['alt'];
  18.    $type=$ligne['type'];
  19.  
  20. echo '<div class="search"><h4>'.$type.'</h4>
  21. <a href="../images/galerie/'.$ligne['photoref'].'" rel="lightbox[roadtrip]" title="'.$ligne['alt'].'" >
  22. <img src="../pages/mini-galerie.php?f='.$ligne['photoref'].'" alt="'.$ligne['alt'].'" border="0" width="185px" height="124px" />
  23. </a>
  24. <br/>
  25. <span class="bleucl">Nom : </span>'.$ref.' <br/>
  26. <span class="bleucl">Déscription : </span><br/>'.$alt.'</div>';
  27.           }
  28.           }
  29. search();
  30. ?>


Message édité par fabrice88250 le 23-09-2009 à 21:15:29
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  REGLE: Surligner un mot dans une page

 

Sujets relatifs
aide moi svp pour page perso internetPoser flux d'actu sur page html
[Réglé] [MySQL] Requête qui ne retourne pas toutes les news...[Réglé]Formulaire avec Radio
[REGLE]Gestion base de donnée Access[Réglé]Menu déroulant
[REGLE] Problème d'includeTableau impossible à afficher dans le haut absolu de la page
Proteger une page avec un mot de passe... (une faill ?) 
Plus de sujets relatifs à : REGLE: Surligner un mot dans une page


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR