J'ai une fonction isNotEmpty qui renvoie 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 elle.
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 en utilisant isNotEmpty est faite:
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 s'il vous plaît éclaircir ceci s'il vous plaît.
Problème simple en fait. Changement:
if (strTemp != '')
à
if ($strTemp != '')
On peut aussi vouloir changer cela en:
if ($strTemp !== '')
puisque != ''
retournera true si vous passez est numérique 0 et quelques autres cas en raison de conversion de type automatique de PHP .
Vous ne devriez pas utiliser la fonction intégrée empty () () pour cela; voir les commentaires et les tables de comparaison PHP } _.
PHP a une fonction intégrée appelée empty()
Le test est fait en tapant if(empty($string)){...}
Référence php.net: php empty
J'utilise toujours une expression régulière pour rechercher une chaîne vide, qui remonte aux jours CGI/Perl, et aussi avec Javascript, alors pourquoi pas avec PHP également, par exemple. (bien que non testé)
return preg_match('/\S/', $input);
Où\S représente un caractère autre qu'un espace
Dans votre clause if de la fonction, vous faites référence à une variable 'strTemp' qui n'existe pas. '$ strTemp' existe cependant.
Mais PHP a déjà une fonction empty () - disponible, pourquoi créer la vôtre?
if (empty($str))
/* String is empty */
else
/* Not empty */
De php.net:
Valeurs de retour
Retourne FALSE si var a un Non vide. et valeur non nulle.
Les choses suivantes sont considérées comme être vide:
* "" (an empty string) * 0 (0 as an integer) * "0" (0 as a string) * NULL * FALSE * array() (an empty array) * var $var; (a variable declared, but without a value in a class)
PHP évalue une chaîne vide à false, vous pouvez donc simplement utiliser:
if (trim($userinput['phoneNumber'])) {
// validate the phone number
} else {
echo "Phone number not entered<br/>";
}
Il suffit d'utiliser la fonction strlen ()
if (strlen($s)) {
// not empty
}
Eh bien, au lieu d’une réponse (je crois que vous avez déjà réglé votre problème), je vais vous donner un conseil.
Je ne connais pas tous les autres, mais je suis personnellement très ennuyé à la vue de quelque chose comme:
if(<<condition>>)
{
return true;
}
return false;
cela appelle une solution élégante "return (<<condition>>);
". Veuillez toujours regarder votre code et supprimer ce type de logique. Vous n'avez pas besoin d'une déclaration IF pour chaque situation.
Je viens d'écrire ma propre fonction, is_string pour la vérification du type et strlen pour vérifier la longueur.
function emptyStr($str) {
return is_string($str) && strlen($str) === 0;
}
print emptyStr('') ? "empty" : "not empty";
// empty
EDIT: Vous pouvez également utiliser la fonction trim pour vérifier si la chaîne est également vide.
is_string($str) && strlen(trim($str)) === 0;
Eh bien voici la méthode courte pour vérifier si la chaîne est vide ou non.
$input; //Assuming to be the string
if(strlen($input)==0){
return false;//if the string is empty
}
else{
return true; //if the string is not empty
}
si vous avez un champ à savoir numéro de série et que vous voulez vérifier vide, alors
$serial_number = trim($_POST[serial_number]);
$q="select * from product where user_id='$_SESSION[id]'";
$rs=mysql_query($q);
while($row=mysql_fetch_assoc($rs)){
if(empty($_POST['irons'])){
$irons=$row['product1'];
}
de cette façon, vous pouvez contrôler tous les champs de la boucle avec une autre fonction vide
J'avais besoin de tester un champ vide dans PHP et utilisé
ctype_space($tempVariable)
qui a bien fonctionné pour moi.
Vous pouvez simplement lancer pour bool
(bool)$string;
ou
function isEmpty(string $string): bool {
return (bool)$string;
}
peut-être que tu peux essayer ça
if(isNotEmpty($userinput['phoneNumber']) == true)
c'est à cause de la configuration de php dans php.ini
Vous avez une réponse mais dans votre cas, vous pouvez utiliser
return empty($input);
ou
return is_string($input);
Je sais que ce fil a été assez vieux mais je voulais juste partager une de mes fonctions. Cette fonction ci-dessous permet de vérifier les chaînes vides, chaîne avec des longueurs maximales, minimales ou exactes. Si vous voulez vérifier les chaînes vides, il suffit de mettre $ min_len et $ max_len à 0.
function chk_str( $input, $min_len = null, $max_len = null ){
if ( !is_int($min_len) && $min_len !== null ) throw new Exception('chk_str(): $min_len must be an integer or a null value.');
if ( !is_int($max_len) && $max_len !== null ) throw new Exception('chk_str(): $max_len must be an integer or a null value.');
if ( $min_len !== null && $max_len !== null ){
if ( $min_len > $max_len ) throw new Exception('chk_str(): $min_len can\'t be larger than $max_len.');
}
if ( !is_string( $input ) ) {
return false;
} else {
$output = true;
}
if ( $min_len !== null ){
if ( strlen($input) < $min_len ) $output = false;
}
if ( $max_len !== null ){
if ( strlen($input) > $max_len ) $output = false;
}
return $output;
}