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

у меня есть функция 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)

http://www.php.net/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/>";
}

просто используйте функцию 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

вот небольшой тест repl.это

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' ;