有人可以告诉我为什么这两个标签正在做不同的事情吗? (第一个字符串在上传到服务器时不起作用,第二个很好)
<a href="http://www.example.com">a</a>
<a href="http://www.example.com">a</a>
我运行转换为HEX值,似乎第一个字符串中至少有一个字符:
3c6120687265663d223f687474703a2f2f7777772e6578616d706c652e636f6d223e613c2f613e0d0a
3c6120687265663d22 687474703a2f2f7777772e6578616d706c652e636f6d223e613c2f613e
第二个字符串是手写的,首先由PHP函数生成:
<?php
$handle = @fopen("./data/test.txt", "r");
$homepage = trim(fgets($handle, 4096));
?>
<a href="<?php echo $homepage;?>">a</a>
在test.txt中,有:
http://www.example.com
在第一行,然后再写几行文字。
此外,隐形字符的代码似乎是3f,这是问号,应该是可见的,对吗?
答案 0 :(得分:3)
文件中有BOM:EF BB BF
。
正确的解决方案是修复将数据放入文件的算法(不放置BOM),或者如果文件是静态的 - 只需使用任何足够先进的文本编辑器将其删除一次(像Notepad ++那样),但作为一个快速而肮脏的解决方案,你可以在运行时删除它:
if (substr($homepage, 0, 3) == pack('CCC', 0xef, 0xbb, 0xbf)) {
$homepage = substr($homepage, 3);
}