我有以下测试程序:
#!/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);
?>
正在读取的文件有一些空行和一些非空行。如此处所示,它的行为符合人们的预期:只有实际为空白的行才会收到“看起来空白”消息,并且修剪 = <>。但是如果我在第 12 行注释掉 echo 语句并再次运行脚本,当我们到达 if 语句时,$trimmed 总是显示为空字符串。就好像 $trimmed 被破坏了,除非它被回显。怎么会这样?