2010-11-23 36 views
0

Je voudrais déterminer si une variable a du texte ou pas du tout.
Par exemple, mon code actuel est le suivant:Déterminer si la variable a N'IMPORTE QUEL texte

if (is_numeric ($id)) 
{ 
    //do stuff 
} 
else 
{ 
    // do other stuff 
} 

Cependant, il y a un problème si ma variable contient à la fois une chaîne et un nombre
tels que « vous êtes 93 ans »,
parce qu'il voit que le nombre 93 est présent et considère la variable numérique.
Je veux que l'instruction if ne "fasse" que s'il n'y a absolument aucun texte dans la variable.

Merci

+3

Comment la fonction peut-elle renvoyer true pour cette chaîne? Avez-vous essayé d'exécuter le code pour cette valeur, vérifiez-vous la bonne variable, etc? Vous devrez peut-être exécuter plus de tests. – BoltClock

+0

Je suis désolé, je ne comprends pas ce que vous voulez dire. Je suis sûr que c'est la bonne variable. Aussi, que voulez-vous dire comment peut-il revenir vrai? – Parker

+1

La raison pour laquelle il demande "comment peut-il retourner vrai" est que la fonction 'is_numeric()' retournera vrai si la chaîne entière contient des nombres ou des nombres décimaux ... Par exemple: votre exemple de 'is_numeric ('vous avez 93 ans') 'retournera toujours' false'. Même une virgule (,) provoquera 'is_numeric' pour renvoyer false. – catchdave

Répondre

1

Essayez coulée la valeur int (ou flotter) comparer ensuite revenir à la version non modifiée. Ils doivent correspondre à des valeurs (mais pas du type)

if((int)$id == $id) { 
} else { 
} 

une autre option serait d'utiliser preg_match("/^([\d.\-]+)$/", $id). Cela vous permettrait d'être très précis sur les caractères que vous laissez $ id contenir. Cependant, l'utilisation regexp doit être considéré comme le choix final (pour des raisons de performance)

+0

regexp parfait fonctionne comme un charme. – Parker

0
if(empty($var) && $var !== "0" && $var !== 0) { 
    // it's really empty, not a string "0" and not a numeric 0 
} 

Vous pouvez également vérifier si ce n'est pas un false booléenne pour un souci d'exhaustivité.