问题情况为:我在aaa.com域下有一个aaa.php文件,做一些处理,输出一个id值;在bbb.com域下bbb.php文件通过cur请求aaa.php,用得到的结果去查数据库老是什么都查不到。于是我将sql语句输出,在浏览器中显示的sql语句正常,但是我将其粘贴到phpmyadmin中的sql查询框时,看出了问题:
在id值的前面出现了一个点号,但是在浏览器页面中并没有显示该符号。
首先想到的是有隐藏字符,于是查了一下BOM的相关知识。关于什么事BOM可以看这里Byte Order Mark
网上大多数说法都是改变文件的编码方式就可以,但是我的两个文件保存的方式本来就都是UTF-8 without BOM,改编码方式不管用,好在还有另一种方法可以解决,在bbb.php文件中对curl到的id值进行一个处理:
//去掉前面的BOM(byte order mark)字节
if (isset($id[2]) && ord($id[0]) == 239 && ord($id[1]) == 187 &&ord($id[2]) == 191) {
$id = substr($id, 3);
}
这样就行了~