Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как проверить строковую переменную на пустоту?
 
 автор: Gopneg_IT   (20.02.2015 в 16:17)   письмо автору
 
 

например у меня есть переменная $text = ""; как проверить, пуста она или нет и почему именно так нада проверять?

  Ответить  
 
 автор: confirm   (20.02.2015 в 16:29)   письмо автору
 
   для: Gopneg_IT   (20.02.2015 в 16:17)
 

<?
if(!trim($text )) echo"Empty";

  Ответить  
 
 автор: Valick   (20.02.2015 в 16:42)   письмо автору
 
   для: confirm   (20.02.2015 в 16:29)
 

почему не
if(empty($text)) echo 'Пусто';

  Ответить  
 
 автор: confirm   (20.02.2015 в 16:56)   письмо автору
 
   для: Valick   (20.02.2015 в 16:42)
 

С чего? А если все таки не empty и что-то есть?

  Ответить  
 
 автор: Drago   (23.02.2015 в 17:48)   письмо автору
 
   для: Gopneg_IT   (20.02.2015 в 16:17)
 

<?
// Удаляем пробелы по краям строки. Как правило, они не важны. 
// Если важны, то эту строку удаляем.
$text trim($text);

// Следует использовать сравнение с пустой строкой, 
// так как строка может состоять из одного символа "0", 
// и приведение к boolean и empty даст неверный результат
if ($text === '') {
    echo 
'Строка пуста.';
}

  Ответить  
 
 автор: confirm   (23.02.2015 в 18:33)   письмо автору
 
   для: Drago   (23.02.2015 в 17:48)
 

Оригинально, это по какой логике такое? Чем 0 хуже 1 или А в контексте строки? А уж если вы ожидаете тип integer, то и проверка должна быть соответственная.

  Ответить  
 
 автор: tvv123456   (23.02.2015 в 18:39)   письмо автору
 
   для: confirm   (23.02.2015 в 18:33)
 

-

  Ответить  
 
 автор: Drago   (24.02.2015 в 09:41)   письмо автору
 
   для: confirm   (23.02.2015 в 18:33)
 

>> Чем 0 хуже 1 или А в контексте строки?

В том то и дело, что ничем. Тем не менее, для вас "0" это пустая строка.

>> А уж если вы ожидаете тип integer, то и проверка должна быть соответственная.

Я ожидаю тип string и не хочу, чтобы какие-то строки потерялись из-за неправильной обработки.

Простой пример, диалог:
Вася: Вопрос на миллион рублей. Сколько будет 1-1?
Петя: 0
Вася: Я не получил ваше сообщения, так как мой скрипт считает, что "0" это пустая строка.

Довольно обидно, согласитесь.

  Ответить  
 
 автор: confirm   (24.02.2015 в 17:01)   письмо автору
 
   для: Drago   (24.02.2015 в 09:41)
 

А вон как, ну если такие строки то да, но и в этом случае можно писать короче:

<?
echo ~trim($s) ? 0;

  Ответить  
 
 автор: Drago   (24.02.2015 в 17:36)   письмо автору
 
   для: confirm   (24.02.2015 в 17:01)
 

Нет никаких "таких" строк. Есть просто строка. И она, либо пуста, либо нет.

Инвертировать биты не лучший выход. Это работает в обе стороны.
Как вы думаете, что получится в вашем примере, если:
<?
$s
"\xcf";
?

  Ответить  
 
 автор: confirm   (25.02.2015 в 07:36)   письмо автору
 
   для: Drago   (24.02.2015 в 17:36)
 

Согласен, если частная проверка то да.

  Ответить  
 
 автор: Yuriev   (25.02.2015 в 11:19)   письмо автору
 
   для: Drago   (24.02.2015 в 17:36)
 

А если длину строки проверить?

  Ответить  
 
 автор: psychomc   (25.02.2015 в 11:31)   письмо автору
 
   для: Yuriev   (25.02.2015 в 11:19)
 

а чем это лучше проверки на пустую строку? зачем лишние телодвижения?

  Ответить  
 
 автор: Yuriev   (25.02.2015 в 19:06)   письмо автору
 
   для: psychomc   (25.02.2015 в 11:31)
 

Истину ищем или зарядкой занимаемся?

  Ответить  
 
 автор: psychomc   (25.02.2015 в 19:39)   письмо автору
 
   для: Yuriev   (25.02.2015 в 19:06)
 

Так вроде истину давно уже нашли, или для вас всё еще это не очевидно?

  Ответить  
 
 автор: Gopneg_IT   (26.02.2015 в 13:23)   письмо автору
 
   для: psychomc   (25.02.2015 в 19:39)
 

в чом правда брат?

  Ответить  
 
 автор: psychomc   (26.02.2015 в 16:18)   письмо автору
 
   для: Gopneg_IT   (26.02.2015 в 13:23)
 

в том, что если мы очень крутые погромисты, то нам, чтобы убедиться, что строка пуста, не достаточно просто её сравнить с пустой строкой, а нужно еще например посчитать количество символов или сделать еще что-нибудь ненужное. вдруг пригодится
а так, уже ж написали: если строка, состоящая из пробела, считается пустой, то делайте trim и сравнивайте результат с пустой строкой, если нет, то просто сравнивайте с пустой строкой. получается так

  Ответить  
 
 автор: Gopneg_IT   (26.02.2015 в 17:21)   письмо автору
 
   для: psychomc   (26.02.2015 в 16:18)
 

ясно

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования