Проверка пустой строки

У меня есть функция isNotEmpty, которая возвращает true, если строка не пустая и false, если строка пуста. Я узнал, что он не работает, если я пропускаю через него пустую строку.

function isNotEmpty($input) { $strTemp = $input; $strTemp = trim($strTemp); if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)" { return true; } return false; } 

Выполняется проверка строки с помощью isNotEmpty:

 if(isNotEmpty($userinput['phoneNumber'])) { //validate the phone number } else { echo "Phone number not entered<br/>"; } 

Если строка пуста, else не выполняется, я не понимаю, почему, может кто-то пролить свет на это, пожалуйста.

Простая проблема. Изменить:

 if(strTemp != '') 

в

 if($strTemp != '') 

Возможно, вы также можете изменить его на:

 if($strTemp !== '') 

так как != '' вернет true, если вы передадите числовое число 0 и несколько других случаев из-за автоматического преобразования типа PHP .

Также имейте в виду, что PHP уже имеет функцию empty () .

PHP имеет встроенную функцию, называемую empty() Тест выполняется путем ввода if(empty($string)){...} Ссылка php.net: php empty

Я всегда использую регулярное выражение для проверки пустой строки, относящейся ко дням CGI / Perl, а также к Javascript, поэтому почему бы и не PHP, например (хотя и непроверенный)

 return preg_match('/\S/', $input); 

Где \ S представляет любой символ без пробелов

PHP оценивает пустую строку на false, поэтому вы можете просто использовать:

 if (trim($userinput['phoneNumber'])) { // validate the phone number } else { echo "Phone number not entered<br/>"; } 

В вашем аргументе if в функции вы ссылаетесь на переменную strTemp, которая не существует. '$ strTemp' действительно существует.

Но у PHP уже есть пустая () – функция, доступная, зачем создавать свои собственные?

 if (empty($str)) /* String is empty */ else /* Not empty */ 

От php.net:

Возвращаемые значения

Возвращает FALSE, если var имеет непустое и ненулевое значение.

Следующие вещи считаются пустыми:

 * "" (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) 

http://www.php.net/empty

Просто используйте функцию strlen ()

 if (strlen($s)) { // not empty } 

Ну, вместо ответа (я считаю, что вы уже исправили свою проблему), я дам вам совет.

Я не знаю обо всех остальных, но лично меня очень раздражает при виде чего-то вроде:

 if(<<condition>>) { return true; } return false; 

это требует элегантного « return (<<condition>>); ». Пожалуйста, всегда смотрите на свой код и удаляйте эту логику. Для каждой ситуации вам не нужен оператор IF.

Ну вот короткий метод проверки, является ли строка пустой или нет.

 $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 } 

возможно, вы можете попробовать это

 if(isNotEmpty($userinput['phoneNumber']) == true) 

это из-за конфигурации php в php.ini

если у вас есть поле, а именно serial_number, и вы хотите проверить пустое место

 $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']; } в $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']; } 

таким образом, вы можете перебирать все петли в цикле с другой пустой функцией

У вас есть ответ, но в вашем случае вы можете использовать

 return empty($input); 

или

 return is_string($input); 

Я просто пишу свою собственную функцию is_string для проверки типов и strlen для проверки длины.

 function emptyStr($str) { return is_string($str) && strlen($str) === 0; } print emptyStr('') ? "empty" : "not empty"; // empty 

Вот небольшой тест repl.it

это короткое и эффективное решение, именно то, что вы ищете:

 return $input > null ? 'not empty' : 'empty' ;