Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2011, 11h30   #1
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
Par défaut str_replace complexe : surligner les mots

Bonjour,

Je bloque à ce niveau de mes compétences php :/

- J'ai une bdd mysql avec une table qui comporte des mots

- J'ai un texte sur mon site et je souhaite mettre les mots de ce texte en gras s'ils sont dans ma table sql.

mots de ma bdd : laisse, élevage de chien, chien

mon code qui fonctionne bien :

Code :
1
2
3
4
5
6
$texte = "J'ai une jolie laisse. Je fais de l'élevage de chien, je vais me servire de ma laisse.";
$query = mysql_query("SELECT mot FROM table");
		while ($result = mysql_fetch_array($query)){
			$texte = str_replace($result['mot'], '<b>'.$result['mot'].'</b>', $result['mot']);
		}
echo $texte;
Mais je souhaiterais aller plus loin et ajouter 2 choses :
1 - Seul le 1et même mot du texte doit être en gras.
2 - mettre en gras une combinaison de mot en priorité sur un mot.

ce qui donnerait dans mon echo :

J'ai une jolie laisse. Je fais de l'élevage de chien, je vais me servire de ma laisse.

Et non PAS ceci :

J'ai une jolie laisse. Je fais de l'élevage de chien, je vais me servire de ma laisse.

Je n'ai aucune idée de comment faire, merci d'avance !
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 11h35   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
tu vas devoir utiliser preg_replace avec son paramètre limit
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 13h55   #3
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
je suis en train d'essayer de voir ça mais pour le moment je nage complètement :/
personne n'aurait un exemple de syntaxe ?
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h07   #4
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
super, j'ai réussi avec le preg_replace et limit ! merci

Maintenant, comment privilégier les combinaisons de mots ?
car mon nouveau code :

Code :
1
2
3
4
5
6
$texte = "J'ai une jolie laisse. Je fais de l'élevage de chien, je vais me servire de ma laisse.";
$query = mysql_query("SELECT mot FROM table");
		while ($result = mysql_fetch_array($query)){
			$texte = preg_replace('#'.$result['mot'].'#'., '<b>'.$result['mot'].'</b>', $result['mot'], 1);
		}
echo $texte;
me retourne ceci :
Citation:
J'ai une jolie laisse. Je fais de l'élevage de chien, je vais me servire de ma laisse
Un seul mot "laisse" en gras ok, mais il faudrait que "élevage de chien" soit en gras et non pas "chien" :/
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h40   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 671
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 671
Points : 5 404
Points : 5 404
Le script est très bête : il va faire exactement ce que tu lui demandes. Il faut donc que tu définisses précisément ce qu'est une combinaison de mots.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h22.


 
 
 
 
Partenaires

Hébergement Web