Services : Actualité Emploi Blog Forum Flux
Formation Trafic : Référencement Liens sponsorisés Affiliation Ecommerce Nom de domaine E-réputation Marketing Mobile Black Hat
Formation Technique : Performance Web Html Css Sql Curl Asp Dotnet Php Ajax Wordpress Twitter Google Analytics

Forum Oseox
Oseox

Expressions regulieres / mot d'une recherche dans contexte

Forum Référencement et Trafic
Nous sommes le Mar 21 Nov 2017 01:35

Heures au format UTC [ Heure d’été ]




Poster un nouveau sujet Répondre au sujet
Auteur Message
MessagePosté: Mar 8 Mar 2011 16:31 
Bonjour,

Pour le site d'un ami, je voudrais afficher les résultats d'une recherche en affichant le mot recherché en gras et dans son contexte (précédé et suivi de 40 caractères, comme ça se fait beaucoup sur les sites. Et je voudrais que l'utilisateur puisse cliquer sur cette ligne pour être dirigé vers la page qui la contient.

Je galère un peu (m^me beaucoup!) avec la function preg_match()

Comment dois-je la contruire? Ou spécifier que le mot trouve s'affiche en gras?
Actuellement, j'utilise
echo str_replace($mot, "<strong>$mot</strong>", $para['paragraphe']);
qui me ramène le paragraphe entier qui contient le mot recherché. Or, je ne voudrais seulement qu'un peu de texte autour de mon mot recherché, qui doit apparaître en gras.

Merci de votre aide!


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Mer 9 Mar 2011 00:07 
Je pense que je peux faire cela avec des functions telles que:

- str_replace pour changer le mot dans le texte par ce même mot en gras
- substr pour ne prendre qu'une partie du texte retourné (il me semble que c'est réalisable avec mysql, mais comment, avez-vous une idée?)
- stpos pour permettre d'initialiser le substr

après pour être plus fin, il faut chercher le caractère X a mettre en début de substr = un "caractère blanc" (espace, saut de ligne, retour chariot, tabulation) afin d'éviter de couper un caractère.

Merci de votre aide


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Mer 9 Mar 2011 09:27 
Administrateur
Avatar de l’utilisateur
Hello

Il faut utiliser preg_replace

Tu peux tester cela :


Code:

$value : le mot à mettre en gras
$string : la chaine contenant les mots à mettre en gras

preg_replace('#\b' . $value . '\b#i', '<b>$0</b>', $string);


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Mer 9 Mar 2011 11:32 
Merci beaucoup de ta réponse! mais ça n'affiche rien, même pas de message d'erreur.
$value : le mot à mettre en gras
$string : la chaine contenant les mots à mettre en gras
preg_replace('#\b' . $value . '\b#i', '<b>$0</b>', $string);

J'ai repris la documentation :
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

$pattern = Le masque à chercher. ICI ce serait le $mot de mon moteur de recherche
CF $requete = "SELECT * FROM textes AS T, pages AS P WHERE P.id=T.idpage AND T.paragraphe LIKE '%$mot%'";
je cherche ce mot dans la base de données

$replacement = La chaîne ou un tableau de chaînes pour le remplacement.
ICI ce serait ce mot en gras?

$subject = La chaîne ou le tableau contenant des chaînes à chercher et à remplacer.
ICI ce serait l'ensemble de la chiane contenant le mot trouvé (en gras)?
'#\b' . $value . '\b#i' ?
que signifie '#\b' et '\b#i'?

et pourquoi '<b>$0</b>' ?

En fait, je cherche un mot ($mot) dans la base, et j'affiche le résultat sous cette forme : 40 caractères avant.<strong>$mot</strong>. 40 caractères après

Merci si tu peux m'éclairer, je fais ça pour le site d'un ami qui lance son entreprise et je n'ai pas de formation en informatique alors j'ai un peu de mal avec la documentation.

Merci


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Mer 9 Mar 2011 11:50 
Avatar de l’utilisateur
Désolé d'être aussi directif mais quelque fois cela a du bon ...

En effet tu indique "je n'ai pas de formation en informatique" et tu veux t'attaquer aux expressions régulières :shock:

Recherche plutôt un Développeur Freelance qui te réaliseras cela à moindre cout. Tu y gagnera en efficience.


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Mer 9 Mar 2011 15:21 
Pourquoi payer si on peut trouver la solution gratuitement.

Je connais très rapidement les expressions régulières. J'en ai besoin que pour une fonction, pour le reste du site, ça va!
Je pensais que ce genre de fonctions étaient utilisées par beaucoup de personnes... vu que ma recherche est quelque chose qui se fait beaucoup sur les sites.

Et as-tu des personnes à me conseiller?
Et combien crois-tu que cela me couterait ? et puis contacter un développeur pour une formule, je ne savais que ça se faisait.

Merci en tout cas ;)


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Jeu 10 Mar 2011 15:46 
Code:
$string : la chaine contenant les mots à mettre en gras
preg_replace('#\b' . $value . '\b#i', '<b>$0</b>', $string);

C'est normal, c'est mis entre simple quote. Ta variable n'est pas interprétée. MP.


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Jeu 10 Mar 2011 18:27 
En fait, si. Ca devrait fonctionner. :shock: :lol:


Haut
 Profil Envoyer un e-mail  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 

Heures au format UTC [ Heure d’été ]


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Abonnez-vous au flux RSS

Blog

Forum

Offres d'emploi

Copyright : Moteur, traduction et optimisation
Merci de votre visite sur le forum Oseox