REGLE: Surligner un mot dans une page - PHP - Programmation
Marsh Posté le 22-01-2007 à 11:39:36
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.
Marsh Posté le 22-01-2007 à 11:44:24
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 ?
Marsh Posté le 22-01-2007 à 12:58:58
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
Donc ta page c'est ta page ton script doit appeler ta page et chercher les occurences dans son contenu
Marsh Posté le 22-01-2007 à 14:54:06
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 ?
Marsh Posté le 22-01-2007 à 15:08:46
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é. |
Marsh Posté le 22-01-2007 à 15:48:15
Merci beaucoup soju, je test tout ça et je REGLE le topic si c'est bon
Marsh Posté le 22-01-2007 à 15:57:50
Citation : |
??? Qu'est ce que va pas ?!?
Marsh Posté le 22-01-2007 à 16:49:39
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 :
|
Marsh Posté le 22-01-2007 à 17:22:17
pkoi ne pas simplement utiliser replace() ? (ou str_replace() ou chais plus quoi, enfin... le replace de base quoi...)
Marsh Posté le 22-01-2007 à 17:43:43
ReplyMarsh Posté le 22-01-2007 à 17:44:54
pour info, ta recherche, tu la fais avec quoi ? (parceque j'ai un sérieux doute sur le "mots entiers" )
Marsh Posté le 22-01-2007 à 17:58:14
soju a écrit : si la recherche porte sur des mots entiers, le str_replace n'est pas adapté... |
et pourquoi donc???
Marsh Posté le 22-01-2007 à 19:13:57
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...
Marsh Posté le 22-01-2007 à 22:10:20
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 : |
Merci à vous tous
Marsh Posté le 23-01-2007 à 09:10:27
MagicBuzz a écrit : parceque s'il cherche "exactement" eau il ne veut pas avoir un troupeau de blaireaux qui déboulent. |
izbing2 a écrit :
|
Marsh Posté le 23-01-2007 à 09:18:21
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.
|
\b est fait pour ça.
preg_replace('#\b' . $recherche. '\b#i', '<span class="surligne">\0</span>', $result);
Marsh Posté le 23-01-2007 à 10:31:06
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...
Marsh Posté le 23-01-2007 à 10:38:24
ça dépend de ce qu'il y a dans $recherche mais admettons que tu aies
Code :
|
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
Marsh Posté le 23-01-2007 à 17:58:10
mot entier : preg_replace('#\beau\b#', '<span>eau</span>', $texte)
recherche standard : str_replace
Marsh Posté le 17-10-2007 à 09:38:52
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.
Marsh Posté le 17-10-2007 à 09:41:01
De plus le preg_replace() me mange un caractère de chaque coté du mot.
Code :
|
Marsh Posté le 23-09-2009 à 21:14:41
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 :
|
Marsh Posté le 22-01-2007 à 11:26:28
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 )
Merci beaucoup
Message édité par Elmoricq le 23-09-2009 à 22:34:56