字符串中不可读的字符
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);
这将删除任何行终止字符。它还将删除前导和尾随空格。
这是获取文本并对每一行进行处理的代码:
<?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);
这将删除任何行终止字符。它还将删除前导和尾随空格。