Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Пустые строки


Автор: boris007 3.8.2006, 08:08
Написал маленький любительский скрипт, который мне нужен в повседневной жизни.
В нём есть textarea, короче поле для текста ), туда я ввожу нужный мне текст и дальше идёт построчная обработка. Но вот незадача, часто в поле попадают пустые строки, и вызывают нежелательный результат скрипта. 
Вот собственно, я уже который день думаю как определить, что строчка являяется набором пробелов, можно было бы проверять наличие пробелов, но в вводимой мной информации могут содержатся пробелы, как бы это реализовать. smile 

Автор: Mal Hack 3.8.2006, 08:34
http://php.net/empty

Автор: boris007 3.8.2006, 08:56
Я знал про empty(). Но как-то логически же неправильно, в строке же есть пробелы, значит она не пустая.Да и в мануале написано:
The following things are considered to be empty: 
"" (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)
Даже код написал, чтобы убедится 
Код

<? 
$p="                                  ";
if (empty($p)) {
echo "эта строка пустая";
               }
?>

Естественно скрипт ничего не выдал.

Автор: Mal Hack 3.8.2006, 08:59
Хм, может меня проглючило...
Тогда регуляркой проверять...

Автор: boris007 3.8.2006, 09:41
Это наверно запутал, назвал тему пустые строки, хотя эти строки вовсе не пустые  smile 
Спасибо, буду с регулярками разбираться, просто думал, что можно сделать это проще )

Автор: wil 3.8.2006, 11:49
попробуй перед проверкой на empty сделать $p = str_replace(" ", "", $p)

Автор: szz 3.8.2006, 13:58
trim, друзья, trim!

Код

if(trim($str)){
   // строка пустая. Там только пробельные символы (пробелы, табы или новые строки)
}

Автор: mr.Anderson 3.8.2006, 18:29
Чего вы мучаетесь?
Код

$str = "                      ";

if( STRLEN( $str ) > 0 )

// то строка НЕ пустая

 smile Уж куда проще.

Автор: ZlojEzh 3.8.2006, 18:43
szz, ты, наверное, имел ввиду:
Код

  if(!trim($str)){
     // строка пустая
  }


в любом случае твой вариант весьма спорен
строка '0' приводится к false
посему следующий пример выдаст 'empty', хотя строка содержит не только пробельные символы
Код

  $str = ' 0   ';
  if (trim($str)) {
    print '!empty';
  } else {
    print 'empty';
  }


Автор: mr.Anderson 3.8.2006, 19:27
ZlojEzh, нет, я имел в виду только то, что я написал. И причем тут приведение к FALSE ? Я же длину проверяю, а не значение!

Автор: szz 3.8.2006, 20:05
Цитата

ZlojEzh, нет, я имел в виду только то, что я написал. 


sim7,   он же ко мне вроде обращался )))

А твое
Код

$str = "                      ";
if( STRLEN( $str ) > 0 )
// то строка НЕ пустая

 выдаст как раз не пустую, хотя надо пустую )))

  Исправляю:
    
Код

if(trim($str)===''){
   // строка пустая, теперь уж точно :)
}

Автор: mr.Anderson 3.8.2006, 21:39
Упс. smile А мне показалось, ко мне.
Ну, а какая разница, пустая - не пустая. Всего делов-то, заменить знак:
Код

$str = "                   ";

if( STRLEN( $str ) === 0 )
 //строка пустая

И нечего тут с trim() мучиться.

Автор: szz 3.8.2006, 21:42
Так строку с пробелами надо считать пустой, такова задача!
  А у тебя он считается не пустой! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)