Détécter si une variable contient un plus (+)

Eléphant du PHP | 428 Messages

07 nov. 2009, 00:27

Bonjour,

Dans le cadre d'un moteur de recherche, je désirerai savoir comment modifier le masque de preg_match pour y inclure un +.

J'ai essayé comme ceci mais il génère une erreur : Compilation failed: nothing to repeat at offset 2 :
if (preg_match("/\b+\b/i", $searchitem)) {}
Si j'utilise le masque suivant je trouve le mot pourtant ...
$searchitem="hello world !";
if (preg_match("/\bhello\b/i", $searchitem)) {
echo 'mot trouvé';
} else {
echo 'mot PAS trouvé';
}
Comment puis je trouver si le sigle + existe dans une variable ?
comment modifier le masque ?

Petit nouveau ! | 5 Messages

07 nov. 2009, 00:32

Le symbole + est interprété dans l'expression régulière, il faut le "backslasher" donc : \+

Eléphant du PHP | 428 Messages

07 nov. 2009, 13:44

Merci delete ^^

ViPHP
fab
ViPHP | 2657 Messages

07 nov. 2009, 13:50

Sinon pour détecter simplement si ta variable contient un "+'"
if(strpos('+',$var)) 
  echo ' ok ';
else 
  echo ' pas ok ';
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 nov. 2009, 12:15

Juste une petite précision sur la réponse de fab pour ceux qui voudraient l'utiliser :
- l'ordre des paramètres de la fonction strpos est inversé : dans cet ordre elle regarde si la chaine contenue dans la variable $var est présente dans la chaine "+" :) (l'ordre des needle varie hélas d'une fonction à l'autre en php ... :roll: )
- a noter également, si le "+" est le premier caractère de la chaine, strpos va retourner la valeur 0 qui dans ce cas sera interprétée comme un FALSE et affichera un "pas ok" alors qu'il est bien présent
if (strpos($var, '+') !== FALSE) 
  echo ' ok ';
else 
  echo ' pas ok ';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 5 Messages

10 nov. 2009, 00:22

Oui opérande de comparaison sur une variable typée, donc 0 n'est pas égal à false ....

Code : Tout sélectionner

if (strpos($var, '+') === FALSE) echo ' nok '; else echo ' ok ';

ViPHP
fab
ViPHP | 2657 Messages

10 nov. 2009, 20:56

Désolé pour cette erreur de précipitation :) merci Ryle de m'avoir corrigé :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }