Page 1 sur 1

Mettre en gras si un mot est trouvé dans une chaine

Posté : 31 juil. 2015, 16:58
par yoann38
Salut à tous.
Je me retourne vers vous pour avoir un petit coup de pouce.
J'ai une variable qui m'affiche un texte issu de ma bdd c'est parfait et j'aimerais que si dans cette variable se trouve le mot "rugby"
alors que ça met le mot en gras.

J'ai un array qui est construit comme ça:
$aLoisirs = array (1 => 'Rugby', 2 => 'Football' );

Ma variable:
<p>'. stripslashes (cut($ligne['detail'], 200, '...')).'</p>

Et donc en gros faire un truc du genre si il y a le mot rugby dans cette phrase alors <strong>Rugby</strong>.
Si c'est le mot Football alors <strong>Football</strong>.

Il parcour l'array et si il trouve un mot de l'array ca l'affiche en gras.
Je blok un peu ....

Merci à vous ;)

Re: Mettre en gras si un mot est trouvé dans une chaine

Posté : 31 juil. 2015, 17:45
par tof73

Re: Mettre en gras si un mot est trouvé dans une chaine

Posté : 01 août 2015, 18:03
par yoann38
Bonjour,
Je vous prie de bien vouloir m'excuse mais serait il possible d'avoir un exemple concret je ne trouve que la doc soit particulierement clair.
En vous remerciant

Re: Mettre en gras si un mot est trouvé dans une chaine

Posté : 01 août 2015, 23:13
par yoann38
J'ai essayer avec cette fonction mais je suis bloqué un peu la
// Test
$findme    = 'football';
$mystring1 = $ligne['description'];


$pos1 = stripos($mystring1, $findme);


// Non, 'a' ne fait pas partie de 'xyz'
if ($pos1 === false) {
    echo "La chaîne '$findme' n'a pas été trouvée dans la chaîne '$mystring1'";
}
else{echo'football trouvé';}

// End test

Il trouve bien la chaine mais comment mettre du coup football en gras maitenant dans mon
<p>'. stripslashes (cut($ligne['detail'], 200, '...')).'</p>
[/PHP]

Re: Mettre en gras si un mot est trouvé dans une chaine

Posté : 02 août 2015, 19:32
par yoann38
Bon j'en suis la dès foi que....
// Test
$findme    = 'foot';
$mystring1 = $ligne['description'];


$pos1 = stripos($mystring1, $findme);


// Non, 'a' ne fait pas partie de 'xyz'
if ($pos1 === false) {
    echo "La chaîne '$findme' n'a pas été trouvée dans la chaîne '$mystring1'";
}
else{echo'foot trouvé';}

$ligne['description'] = str_replace('foot' ,'<strong>foot</strong>',$ligne['description']);

// End test
Mais je ne peut pas rajouté la meme chose pour rugby ou boxe par exemple

J'affiche le tout ainsi
<p>'. stripslashes (cut($ligne['detail'], 200, '...')).'</p>

Re: Mettre en gras si un mot est trouvé dans une chaine

Posté : 02 août 2015, 20:33
par mathieu269
tu y es presque, tu peux appliquer le remplacement plusieurs fois de suite :

Code : Tout sélectionner

$ligne['description'] = str_replace('foot' ,'<strong>foot</strong>',$ligne['description']); $ligne['description'] = str_replace('rugby' ,'<strong>rugby</strong>',$ligne['description']);
ou alors en une seule fois

Code : Tout sélectionner

$mots = array("foot", "rugby"); // liste des mots // construction des valeurs de remplacement $remplacements= array_map(function ($mot) { return "<strong>$mot</strong>"; }, $mots); // remplacement $ligne['description'] = str_replace($mots, $remplacements, $ligne['description']);

Re: Mettre en gras si un mot est trouvé dans une chaine

Posté : 02 août 2015, 21:59
par yoann38
Merci bcp c'est just parfait :)