J'ai une fonction isNotEmpty qui retourne vrai si la chaîne n'est pas vide et faux si la chaîne est vide. J'ai découvert que cela ne fonctionne pas si je passe une chaîne vide à travers.
function isNotEmpty($input)
{
$strTemp = $input;
$strTemp = trim($strTemp);
if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
{
return true;
}
return false;
}
La validation de la chaîne à l'aide de isNotEmpty se fait:
if(isNotEmpty($userinput['phoneNumber']))
{
//validate the phone number
}
else
{
echo "Phone number not entered<br/>";
}
Si la chaîne est vide, le reste ne s'exécute pas, je ne comprends pas pourquoi, quelqu'un peut-il faire la lumière sur ce sujet s'il vous plaît.
php
string
validation
bgosalci
la source
la source
Réponses:
Problème simple en fait. Changement:
à
On peut aussi vouloir le changer en:
puisque
!= ''
retournera vrai si vous passez est numérique 0 et quelques autres cas en raison de la conversion automatique de type de PHP .Vous ne devez pas utiliser la fonction empty () intégrée pour cela; voir les commentaires et les tableaux de comparaison de types PHP .
la source
PHP a une fonction intégrée appelée
empty()
le test se fait en tapantif(empty($string)){...}
Reference php.net: php emptyla source
J'utilise toujours une expression régulière pour vérifier une chaîne vide, remontant aux jours CGI / Perl, et aussi avec Javascript, alors pourquoi pas aussi avec PHP, par exemple (bien que non testé)
Où \ S représente tout caractère non blanc
la source
.
ne correspond pas aux nouvelles lignes -[\s\S]
est un hack autour de ce problème. Ceci est courant en JavaScript, mais en PHP, vous pouvez utiliser le/s
drapeau pour faire correspondre le point à tous les caractères. Et stackoverflow.com/a/4544646/5411817 mentionne:(?s)
active les
mode et(?-s)
le désactive. Une fois désactivée, aucune suite.
ne correspondra à une nouvelle ligne. si vous souhaitez activer / désactiver l'interrupteur en ligne (intégré dans l'expression régulière) plutôt que comme indicateur d'expression régulière.Dans votre
if
clause de la fonction, vous faites référence à une variablestrTemp
qui n'existe pas.$strTemp
existe, cependant.Mais PHP a déjà une
empty()
fonction disponible; pourquoi faire le vôtre?De php.net:
http://www.php.net/empty
la source
PHP évalue une chaîne vide à false, vous pouvez donc simplement utiliser:
la source
Utilisez simplement la fonction strlen ()
la source
Php 5.3
la fonction ne revienne5
si$s
est de typearray
.Php > 5.3
soulèvera une exception. Je recommande d'utiliseris_string($s) && str_len($s) > 0
.>0
juste à des fins de lecture.J'écris juste ma propre fonction, is_string pour la vérification de type et strlen pour vérifier la longueur.
Voici un petit test repl.it
EDIT: Vous pouvez également utiliser la fonction Trim pour tester si la chaîne est également vide.
la source
Je devais tester un champ vide en PHP et utilisé
qui a bien fonctionné pour moi.
la source
Eh bien voici la méthode courte pour vérifier si la chaîne est vide ou non.
la source
strlen()
été recommandée en 2014 sur cette page. Votre réponse n'ajoute aucune nouvelle valeur.Vous pouvez simplement lancer à bool, n'oubliez pas de gérer zéro.
la source
(bool)$str
est la même chose que faire!empty($str)
et a le même problème avec'0'
. Lisez PHP Booleans , la section "Conversion en booléen". En outre, vous l'avez fait à l'envers - devrait l'être!(bool)$string'
. Ou votre fonction doit être nommée "isNotEmpty". Quoi qu'il en soit, vous êtes coincé avec une gestion incorrecte de «0».0
problème, il suffit de gérer cela avant de retourner la chaîne castée. Et merci beaucoup, j'ai oublié la négation!
(les noms de fonction niés sont une mauvaise pratique). Modifié mon message.Je sais que ce fil est assez ancien mais je voulais juste partager une de mes fonctions. Cette fonction ci-dessous peut rechercher des chaînes vides, des chaînes avec des longueurs maximales, minimales ou exactes. Si vous voulez vérifier les chaînes vides, mettez simplement $ min_len et $ max_len à 0.
la source
vous pouvez peut-être essayer ceci
c'est à cause de la configuration php dans php.ini
la source
si vous avez un champ à savoir serial_number et que vous voulez vérifier vide alors
de cette façon, vous pouvez contrôler tous les fichiers dans la boucle avec une autre fonction vide
la source
empty()
a déjà été recommandé sur cette page en 2009.c'est la solution courte et efficace, exactement ce que vous recherchez:
la source
null
en chaîne vide pour comparaison. Dans ce cas, il serait beaucoup plus clair de dire ce que vous entendez:$input > ''
. C'est-à-dire "effectuer une comparaison lexicale entre la chaîne d'entrée et une chaîne vide". Ou pour ignorer les espaces aux extrémités:trim($input) > ''
.$input
est'0'
. Pas clair si php fait une comparaisonnumeric
oulexical
, lorsque le premier argument est une chaîne numérique.Vous avez une réponse mais dans votre cas, vous pouvez utiliser
ou
la source
empty("0")
empty
- cette réponse a déjà été donnée, donc la répéter ne contribue à rien. Pire, comme cela a été discuté dans les commentaires, c'est faux - toute valeur équivalente à0
sera considérée comme "vide". 2.is_string
est erroné d'une manière différente - une chaîne vide''
est une chaîne, donc retournera vrai dans ce cas - ne fait pas ce que la question demande.