我有以下测试程序:
#!/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被破坏了,除非它被回应。怎么会这样?
答案 0 :(得分:2)
我认为你不需要在那里使用正则表达式。如果该行只是空格开头,trim()
将使其为空。
尝试:
if (empty($trimmed)) {
它的行为与我预期的一样 - 因为你现在没有回显任何非空行,你的输出只显示一堆空行
$ ./test|wc -l
18
$ nano test #comment line 12
$ ./test|wc -l
6