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

Mammouth du PHP | 643 Messages

31 juil. 2015, 16:58

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 ;)

Mammouth du PHP | 688 Messages

31 juil. 2015, 17:45


Mammouth du PHP | 643 Messages

01 août 2015, 18:03

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

Mammouth du PHP | 643 Messages

01 août 2015, 23:13

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]

Mammouth du PHP | 643 Messages

02 août 2015, 19:32

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>

Eléphanteau du PHP | 23 Messages

02 août 2015, 20:33

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']);

Mammouth du PHP | 643 Messages

02 août 2015, 21:59

Merci bcp c'est just parfait :)