如何使 stripos() 处理多字节字符串?
我正在使用 stripos()
函数检查一个字符串是否位于另一个字符串内部,忽略任何情况。
问题是:
stripos("ø", "Ø")
返回 false。而
stripos("Ø", "Ø")
返回 true。
正如您可能看到的,在这种情况下,该函数似乎不执行不区分大小写的搜索。
该函数对于 Ææ
和 Åå
等字符也有同样的问题。这些是丹麦字符。
I am using the stripos()
function to check if a string is located inside another string, ignoring any cases.
Here is the problem:
stripos("ø", "Ø")
returns false. While
stripos("Ø", "Ø")
returns true.
As you might see, it looks like the function does NOT do a case-insensitive search in this case.
The function has the same problems with characters like Ææ
and Åå
. These are Danish characters.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
mb_stripos()
代替。它具有字符集感知能力,并且可以处理多字节字符集。 stripos() 是过去只有 ASCII 并且所有字符都只有 1 个字节的美好时光的延续。Use
mb_stripos()
instead. It's character set aware and will handle multi-byte character sets. stripos() is a holdover from the good old days when there was only ASCII and all chars were only 1 byte.您需要mb_stripos。
You need mb_stripos.
mb_stripos 将处理这个问题。
mb_stripos will take care of this.
正如其他解决方案所说,首先尝试使用 mb_stripos()。但如果使用此函数没有帮助,请检查 php 文件的编码。将其转换为 UTF-8 并保存。 经过几个小时的研究,这对我来说是成功的。
As the other solutions say, try first with mb_stripos(). But if using this function doesn't help, check the encoding of your php file. Convert it to UTF-8 and save it. That did the trick for me after hours of research.