是的我知道.当我们使用多字节char时,我们应该使用mb_ *函数.但是当我们使用strpos时?
我们来看看这段代码(保存在utf-8中)
我们来看看这段代码(保存在utf-8中)
var_dump(strpos("My symbol utf-8 is the €.","\xE2\x82\xAC")); // int(23)
使用mb_strpos有区别吗?是不是让这项工作成绩相同?毕竟,不是strpos寻找一个字符串(多个字节)?是否有理由使用strpos?
对于UTF-8,匹配字节序列与匹配字符序列完全相同.
所以他们都会在完全相同的点找到针,但是mb_strpos在针之前计算完整的UTF-8字节序列,其中strpos计算任何字节.因此,如果您的字符串具有另一个多字节UTF-8序列,则结果会有所不同:
strpos("My symbolö utf-8 is the €.","€") !== mb_strpos("My symbolö utf-8 is the €.","€","UTF-8")
但:
strpos("My symbol utf-8 is the €.","€") === mb_strpos("My symbol utf-8 is the €.","UTF-8")