T'as de la chance que j'aime bien les schtroumpf, surtout la Schtroumpfette
Si tu veux pouvoir la trouver en recherchant un schtroumpf, tu peux faire :
1 2 3 4 5
| $recherche = 'schtroumpf';
$chaine = '"mot1 mot2 toto schtroumpfette"';
if (preg_match('#".*'.$recherche.'.*"#',$chaine,$result)) print_r($result); |
si non
1 2 3 4 5 6
|
$recherche = 'schtroumpf';
$chaine = '"mot1 mot2 toto schtroumpfette"';
if (preg_match('#".*\b'.$recherche.'\b.*"#',$chaine,$result)) print_r($result); |
Tu l'auras compris le "\b" symbolise un séparateur de mot, le point "." n'importe quel caractère, et "*" que le caractère qui précède est facultatif et peut apparaître 0, 1 ou plusieurs fois.
Si tu veux éviter que la regex se goinfre trop car elle est gourmande par défaut, ajoute l'option U derrière le dernier délimiteur '#". Et pour faire bonne mesure tu peux aussi mettre un "i" pour une recherche insensible à la casse, soit :
if (preg_match('#".*\b'.$recherche.'\b.*"#Ui',$chaine,$result)) print_r($result);
Dans tous les cas, prends soin d'échapper les caractères spéciaux spécifiques aux régex si tu en inclus dans $recherche.
LE site de référence (en français).
Partager