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


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

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

Author: bgosalci, 2009-04-05

15 answers

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

if(strTemp != '')

До

if($strTemp != '')

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

if($strTemp !== '')

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

Также имейте в виду, что в PHP уже есть функция empty().

 243
Author: cletus, 2013-05-12 13:54:44

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

 34
Author: Malak, 2012-01-10 21:35:14

В предложении 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

 15
Author: Björn, 2012-10-29 14:58:04

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

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

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

 12
Author: George Jempty, 2009-04-05 14:28:33

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

if (trim($userinput['phoneNumber'])) {
  // validate the phone number
} else {
  echo "Phone number not entered<br/>";
}
 11
Author: troelskn, 2009-04-05 17:30:25

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

if (strlen($s)) {
   // not empty
}
 9
Author: Zhihua Lai, 2014-07-28 00:30:19

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

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

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

    return false;

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

 3
Author: Peter Perháč, 2009-04-05 17:46:16

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

$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
}
 2
Author: abhishek bagul, 2015-05-14 05:33:36

Я просто пишу свою собственную функцию, 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;    
 2
Author: svarog, 2018-04-09 07:24:20

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

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

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

 0
Author: 0xFF, 2009-04-05 14:22:20

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

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

 0
Author: user2042007, 2013-02-21 05:52:12

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

return empty($input);

Или

return is_string($input);
 0
Author: geekido, 2016-07-27 18:48:01

Вы можете просто привести к bool

(bool)$string;

Или

function isEmpty(string $string): bool {
   return (bool)$string;
}
 0
Author: Fabian Picone, 2018-06-20 06:22: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;
}
 0
Author: Kevin Ng, 2018-07-22 07:15:12

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

return $input > null ? 'not empty' : 'empty' ;
 -1
Author: Moti Winkler, 2015-03-29 15:27:59