PHP:fgets()返回值未正确评估?

时间:2019-05-27 18:28:21

标签: php

我有一个PHP脚本,该脚本应根据名为info.txt的文件的第一行为'0'或其他方式来执行某些操作。我的PHP文件:

<?php
$handle = fopen('info.txt','r');
$line = fgets($handle);
fclose($handle);

// print detailed contents of $line
foreach(str_split($line) as $chr) {
  printf("[%02x] %s <br />",ord($chr),$chr);
}

if ($line == '0\n') {
  echo "equal";
} else {
  echo "not equal";
}
?>

在另一个关于stackoverflow的答案上,我得到了foreach循环,它按字符将$line分开,并打印出字符代码及其结果。当我运行此文件时,输出为:

[30] 0  
[0a]  
not equal

info.txt的第一行看起来只是0\n,因为据我了解,0x0a应该与\n相同。我在Mac OS X上运行此文件,但我认为这不应改变ASCII 0x0a\n字符这一事实。为什么$line的评估结果不等于'0\n'?我是PHP的新手,所以问题很可能是一些明显的语法问题。谢谢!

1 个答案:

答案 0 :(得分:0)

您必须使用双引号而不是简单的引号,以便将“ \ n”解释为换行符。用单引号将字符解释为'\'+'n'字符。

if ($line == "0\n") {
        echo "equal\n";
    } else {
        echo "not equal\n";
    }