字符串中不可读的字符

Unreadable Characters in a String

这是获取文本并对每一行进行处理的代码:

<?php
$f = fopen('text.txt' , 'r');
$i = 0;
while($line = fgets($f)){
    if($i == 1){
        $first_line = $line;
    }elseif($i == 2){
        $second_line= $line;
    }elseif($i == 3){
        $third_line = $line;
    }
    $i++;
}
?>

text.txt 包含:

3
ABC
aBD

当我 运行 下面的代码时,它给了我一个奇怪的输出:

echo strlen($second_line);

$second_line 应该是 ABC 但返回的输出是这样的:

5

另外urlencode($second_line)显示:

ABC%0D%0A

这 5 个字符中的一个是 "\n",它转到下一行

主要问题是,另外一个隐藏角色是什么?

由于 Windows 使用 \r\n 作为行终止符,这将为每个字符串添加额外的 2 个字符。 Linux 只使用 \r 所以这只是额外的 1 个。

要提供通用的解决方案,最好使用

$line = trim($line);

这将删除任何行终止字符。它还将删除前导和尾随空格。