Проверка пустоты строки
у меня есть функция 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/>";
}
если строка пуста, остальное не выполняется, я не понимаю, почему, может кто-то, пожалуйста, пролить свет на это, пожалуйста.
15 ответов
простая проблема на самом деле. Изменить:
if(strTemp != '')
до
if($strTemp != '')
возможно, вы также захотите изменить его на:
if($strTemp !== '')
С != ''
вернет true, если вы передадите числовой 0 и несколько других случаев из-за автоматическое преобразование типов PHP.
также имейте в виду, что PHP имеет пустая()
PHP имеет встроенную функцию под названием empty()
тест выполняется путем ввода
if(empty($string)){...}
Ссылка php.net : php пустой
в вашем предложении 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)
Я всегда использую регулярное выражение для проверки пустой строки, начиная с дней 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(<<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
}
Я просто пишу свою собственную функцию,is_string для проверки типов и strlen чтобы проверить длину.
function emptyStr($str) {
return is_string($str) && strlen($str) === 0;
}
print emptyStr('') ? "empty" : "not empty";
// empty
EDIT: вы также можете использовать отделка функция для проверки, если строка также пуста.
is_string($str) && strlen(trim($str)) === 0;
может быть, вы можете попробовать этот
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'];
}
таким образом, вы можете проверить все файлы в цикле с другой пустой функцией
вы получили ответ, но в вашем случае вы можете использовать
return empty($input);
или
return is_string($input);
Вы можете просто бросить в bool
(bool)$string;
или
function isEmpty(string $string): bool {
return (bool)$string;
}
Я знаю, что этот поток был довольно старым, но я просто хотел поделиться одной из моих функций. Эта функция ниже может проверить пустые строки, строки с максимальной длиной, минимальной длиной или точной длиной. Если вы хотите проверить пустые строки, просто поместите $min_len и $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;
}
это самое короткое и эффективное решение, именно то, что вы ищете :
return $input > null ? 'not empty' : 'empty' ;