【问题标题】:Unreadable Characters in a String字符串中的不可读字符
【发布时间】:2020-03-13 15:15:12
【问题描述】:

这是获取文本并在每一行上执行处理的代码:

<?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",它转到下一行

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

【问题讨论】:

  • 试试echo urlencode($k);并显示结果
  • 它在寡妇中,我通过 wamp @NigelRen 运行代码
  • Windows 使用 "\r\n" 作为行尾。
  • 所以如果我使用str_replace("\r\n" , "",$line) 可以吗?
  • 您可以只使用一般的$line = trim($line); 来确保删除任何多余的空格/行结尾。

标签: php text fopen strlen


【解决方案1】:

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

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

$line = trim($line);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多