Проверка, является ли строка пустой
У меня есть функция 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 answers
На самом деле простая проблема. Изменение:
if(strTemp != '')
До
if($strTemp != '')
Возможно, вы также захотите изменить его на:
if($strTemp !== '')
Так как != ''
вернет значение true, если вы передадите числовое значение 0 и несколько других случаев из-за автоматического преобразования типов PHP.
Также имейте в виду, что в PHP уже есть функция empty().
В 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/>";
}
Просто используйте функцию 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
}
Я просто пишу свою собственную функцию, is_string для проверки типа и strlen для проверки длины.
function emptyStr($str) {
return is_string($str) && strlen($str) === 0;
}
print emptyStr('') ? "empty" : "not empty";
// empty
ИЗМЕНИТЬ: Вы также можете использовать функцию обрезать , чтобы проверить, является ли строка также пустой.
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' ;