Isoler occurrence dans texte

Petit nouveau ! | 2 Messages

04 août 2009, 13:08

Bonjour a tous.

Je cherche a mettre en gras des mots dans un texte comme le fait google, grâce a la fonction eregi mais je n y arrive pas.

Voici mon code:

Code : Tout sélectionner

function hilight_text($text,$word_to_hilight) { eregi('(([a-z0-9]+ ){0,2})((('.$word_to_hilight.')(e|es)?)( (('.$word_to_hilight.')(e|es)?))*)(( [a-z0-9]+){0,2})',$text,$items); echo '<pre>'; print_r($items); echo '</pre>'; return '<i>'.$items[1].'<b>'.$items[3].'</b>'.$items[11].'</i><br />'; } echo hilight_text('test du decoupage du mot bateau, le mot bateau devrai se mettre en gras','bateau');

Pourriez-vous m'aider s'il vous plait.

Merci

Eléphant du PHP | 453 Messages

04 août 2009, 14:33

Hello,

Si ton texte est bien défini, je ne crois pas que tu ais besoin d'une RegEx. Je te propose de lire ceci :
function surbrillance_text($text,$mot_surbrillance){
  $text = str_replace($mot_surbrillance,'<span class="gras">'.$mot_surbrillance.'</span>',$text);
  
  return $text;
}
Au passage, les fonctions POSIX sont plutôt à proscrire au profit des PCRE (preg_match, preg_replace, etc.)

Bonne journée à toi
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Mammouth du PHP | 2937 Messages

04 août 2009, 15:15

Si ton texte est bien défini, je ne crois pas que tu ais besoin d'une RegEx. Je te propose de lire ceci :
function surbrillance_text($text,$mot_surbrillance){
  $text = str_replace($mot_surbrillance,'<span class="gras">'.$mot_surbrillance.'</span>',$text);
  
  return $text;
}
str_replace () à remplacer par str_ireplace () si l'on ne veut pas tenir compte de la casse. ;)

Petit nouveau ! | 2 Messages

04 août 2009, 22:31

Merci, pour votre aide, ça marche :D