猿问

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

我有一个 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 上运行这个文件,但我认为这不应该改变 ASCII0x0a是\n字符的事实。任何想法为什么$line不评估为等于'0\n'?我是 PHP 的新手,所以问题很可能是一些明显的语法问题。谢谢!


ABOUTYOU
浏览 206回答 1
1回答

一只甜甜圈

您必须使用双引号而不是简单的引号,以便“\n”被解释为换行符。使用单引号,字符被解释为 '\' + 'n' 个字符。if ($line == "0\n") {&nbsp; &nbsp; &nbsp; &nbsp; echo "equal\n";&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; echo "not equal\n";&nbsp; &nbsp; }
随时随地看视频慕课网APP
我要回答