除非回显,否则PHP字符串将变为空

时间:2013-09-18 02:38:35

标签: php string

我有以下测试程序:

#!/usr/bin/php
<?php
echo "Starting\n";

# Now read the file.
#
$file_pn = "contact.txt";
$fh = fopen($file_pn, 'r');
while (!feof($fh)) {
   $line = fgets($fh);
   $trimmed = trim($line);
   echo "trimmed = <" . $trimmed . ">\n";
   if (preg_match('/^\s*$/', $trimmed)) {
      echo "Looks blank: trimmed = <" . $trimmed . ">\n";
      #continue;
   }
}
fclose($fh);
?>

正在读取的文件有一些空白行和一些非空白行。如此处所示,它可以按照预期的方式运行:只有实际为空白的行才会收到“Looks blank”消息,并且trimmed =&lt;&gt ;.但是如果我在第12行中注释掉echo语句并再次运行脚本,那么当我们到达if语句时,$ trimmed总是显示为空字符串。就好像$ trimmed被破坏了,除非它被回应。怎么会这样?

1 个答案:

答案 0 :(得分:2)

我认为你不需要在那里使用正则表达式。如果该行只是空格开头,trim()将使其为空。

尝试:

if (empty($trimmed)) {

它的行为与我预期的一样 - 因为你现在没有回显任何非空行,你的输出只显示一堆空行

$ ./test|wc -l
18
$ nano test #comment line 12
$ ./test|wc -l
6