У меня есть функция isNotEmpty, которая возвращает истину, если строка не пуста, и ложь, если строка пуста. Я обнаружил, что это не работает, если я пропущу через него пустую строку.
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/>";
}
Если строка пуста, остальное не выполняется, я не понимаю почему, может кто-то, пожалуйста, пролить свет на это, пожалуйста.
php
string
validation
bgosalci
источник
источник
Ответы:
Простая проблема на самом деле. Изменить:
в
Возможно, вы также можете изменить его на:
с
!= ''
будет возвращать true, если вы передадите число 0 и несколько других случаев из-за автоматического преобразования типов в PHP .Вы не должны использовать встроенную функцию empty () для этого; см. комментарии и таблицы сравнения типов PHP .
источник
В PHP есть встроенная функция, называемая
empty()
тестом. Для этогоif(empty($string)){...}
введите Справочник php.net: php emptyисточник
Я всегда использую регулярное выражение для проверки пустой строки, начиная с дней CGI / Perl, а также с Javascript, так почему бы не использовать PHP, например (хотя и не проверено)
Где \ S представляет любой непробельный символ
источник
.
не совпадает с новыми строками -[\s\S]
это решение этой проблемы. Это часто встречается в JavaScript, но в PHP вы можете использовать/s
флаг, чтобы точка соответствовала всем символам. И stackoverflow.com/a/4544646/5411817 упоминает:(?s)
включаетs
режим и(?-s)
выключает, если выключен. После выключения любое следующее.
не будет соответствовать новой строке. если вы хотите включить / выключить переключатель (встроенный в регулярное выражение), а не как флаг регулярного выражения.В своем
if
предложении в функции вы ссылаетесь на переменнуюstrTemp
, которая не существует.$strTemp
все же существует.Но PHP уже имеет
empty()
доступную функцию; зачем делать свой?С php.net:
http://www.php.net/empty
источник
PHP оценивает пустую строку как false, поэтому вы можете просто использовать:
источник
Просто используйте функцию strlen ()
источник
Php 5.3
чем функция вернется,5
если$s
имеет типarray
.Php > 5.3
возникнет исключение. Я рекомендую использоватьis_string($s) && str_len($s) > 0
.>0
только для чтения.Я просто пишу свою собственную функцию, is_string для проверки типов и strlen для проверки длины.
Вот небольшой тест repl.it
РЕДАКТИРОВАТЬ: Вы также можете использовать функцию обрезки, чтобы проверить, если строка также пуста.
источник
Мне нужно было проверить пустое поле в PHP и использовал
который работал хорошо для меня.
источник
Хорошо, вот короткий метод, чтобы проверить, является ли строка пустой или нет.
источник
strlen()
была рекомендована в 2014 году на этой странице. Ваш ответ не добавляет никакой новой ценности.Вы можете просто привести к bool, не забудьте обработать ноль.
источник
(bool)$str
то же самое, что делать!empty($str)
, и имеет ту же проблему с'0'
. Прочтите PHP Booleans , раздел «Преобразование в логическое значение». Кроме того, вы получили это задом наперед - должно быть!(bool)$string'
. Или ваша функция должна быть названа "isNotEmpty". В любом случае, вы застряли с неправильной обработкой '0'.0
проблемы просто обработайте это перед возвратом приведенной строки. И большое спасибо, я забыл отрицание!
(отрицательные имена функций - плохая практика). Отредактировал мой пост.Я знаю, что эта тема была довольно старой, но я просто хотел поделиться одной из моих функций. Эта функция ниже может проверять наличие пустых строк, строк максимальной длины, минимальной длины или точной длины. Если вы хотите проверить наличие пустых строк, просто установите $ min_len и $ max_len в 0.
источник
может ты сможешь попробовать это
это из-за конфигурации php в php.ini
источник
если у вас есть поле именно serial_number и вы хотите проверить пусто, то
таким образом, вы можете проверить все поля в цикле с другой пустой функцией
источник
empty()
было рекомендовано на этой странице еще в 2009 году.это краткое и эффективное решение, именно то, что вы ищете:
источник
null
в пустую строку для сравнения. В этом случае было бы гораздо яснее сказать, что вы имеете в виду$input > ''
. То есть «выполнить лексическое сравнение между входной строкой и пустой строкой». Или игнорировать пробелы на концахtrim($input) > ''
.$input
есть'0'
. Не ясно, делает ли phpnumeric
илиlexical
сравнение, когда первый аргумент является числовой строкой.Вы получили ответ, но в вашем случае вы можете использовать
или
источник
empty("0")
empty
- этот ответ уже дан, так что повторение этого ничего не даст. Хуже того, как обсуждалось в комментариях, это неправильно - любое значение, эквивалентное,0
будет считаться «пустым». 2.is_string
неправильно по-другому - пустая строка''
является строкой, поэтому в этом случае вернет true - не может выполнить то, что задает вопрос.