两个看起来长得一模一样的字符串string1和string2,如果用string1==string2判断却发现得出来的结果是false,是不是会让你觉得不知所措,满脸问号?
实际上,他们就像是一对孪生兄弟,虽然看起来一样,但实际上却有着细微的差别,不细心检测,确实会让人疑惑。
如何分别他们呢?
如果踩过这个坑的人应该都会知道,通过base64_encode加密一下,你就会发现他们之间的差异。他们之中会有一个多了一个【77u/】这个东西,而这个东西就是传说中的Bom头了,正常情况下这个头是不会显示出来的,所以你就无法发现他们的差异了。
如何判断是否存在BOM头信息?
假如string1是带有bom头信息的:
$charset1 = substr($string1, 0, 1);
$charset2 = substr($string1, 1, 1);
$charset3 = substr($string1, 2, 1);
if (ord($charset1) == 239 && ord($charset2) == 187 && ord($charset3) == 191) {
$string1 = substr($string1, 3);
}
通过以上的方法可以判断并且去除bom的头信息。
小问题,多积累,记录下来希望能够帮助的更多的伙伴。