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

У меня есть функция 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 не выполняется, я не понимаю, почему, может кто-то пролить свет на это, пожалуйста.

Ответ 1

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

if (strTemp != '')

в

if ($strTemp != '')

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

if ($strTemp !== '')

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

Вы не должны использовать встроенную функцию empty() для этого; см. комментарии и таблицы сравнения типов PHP.

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

В вашем случае 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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

Хорошо, вместо ответа (я полагаю, вы уже исправили свою проблему), я вам посоветую.

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

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

    return false;

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

Ответ 8

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

function emptyStr($str) {
    return is_string($str) && strlen($str) === 0;
}

print emptyStr('') ? "empty" : "not empty";
// empty

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

РЕДАКТИРОВАТЬ: Вы также можете использовать функцию обрезки, чтобы проверить, если строка также пуста.

is_string($str) && strlen(trim($str)) === 0;    

Ответ 9

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

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

Ответ 10

Мне нужно было проверить пустое поле в PHP и использовал

ctype_space($tempVariable)

который работал хорошо для меня.

Ответ 11

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

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

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

Ответ 12

если у вас есть поле, а именно 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'];
}

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

Ответ 13

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

return empty($input);

или

return is_string($input);

Ответ 14

Вы можете просто привести к bool, не забудьте обработать ноль.

function isEmpty(string $string): bool {
    if($string === '0') {
        return false;
    }
    return !(bool)$string;
}

var_dump(isEmpty('')); // bool(true)
var_dump(isEmpty('foo')); // bool(false)
var_dump(isEmpty('0')); // bool(false)

Ответ 15

Я знаю, что эта тема была довольно старой, но я просто хотел поделиться одной из моих функций. Эта функция ниже может проверять наличие пустых строк, строк максимальной длины, минимальной длины или точной длины. Если вы хотите проверить наличие пустых строк, просто установите $ 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;
}

Ответ 16

<option value=""> Default </option>
<option value="true" {{app('request')->input('status') ? 'selected' : ''}}> 1 </option>
<option value="false" {{!is_null(app('request')->input('status')) && app('request')->input('status') == 0 ? 'selected' : '' }}> 2 </option>

Ответ 17

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

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