Проверка, если строка пуста - PullRequest
198 голосов
/ 05 апреля 2009

У меня есть функция 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/>";
}

Если строка пустая, а остальное не выполняется, я не понимаю почему, может кто-нибудь, пожалуйста, пролить свет на это, пожалуйста.

Ответы [ 16 ]

278 голосов
/ 05 апреля 2009

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

if (strTemp != '')

до

if ($strTemp != '')

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

if ($strTemp !== '')

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

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

33 голосов
/ 10 января 2012

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

17 голосов
/ 05 апреля 2009

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

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

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

16 голосов
/ 05 апреля 2009

В вашем предложении if в функции вы ссылаетесь на переменную 'strTemp', которая не существует. '$ strTemp' существует, однако.

Но в PHP уже есть функция empty () - зачем создавать свою собственную?

if (empty($str))
    /* String is empty */
else
    /* Not empty */

с php.net:

Возвращаемые значения

Возвращает FALSE, если переменная имеет непустой и ненулевое значение.

Следующие вещи считаются быть пустым:

* "" (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

14 голосов
/ 05 апреля 2009

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

if (trim($userinput['phoneNumber'])) {
  // validate the phone number
} else {
  echo "Phone number not entered<br/>";
}
10 голосов
/ 28 июля 2014

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

if (strlen($s)) {
   // not empty
}
3 голосов
/ 06 августа 2017

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

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

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

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

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

is_string($str) && strlen(trim($str)) === 0;    
3 голосов
/ 05 апреля 2009

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

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

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

    return false;

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

2 голосов
/ 14 мая 2015

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

$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
}
0 голосов
/ 09 мая 2019

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

ctype_space($tempVariable)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...