我只是坚持这个并且找不到解决方案。
我想尝试使用preg_replace
将字符串转换为小写。
我只是无法创建正确的正则表达式。
原因是普通strtolower
不支持unicode字符。
我知道我可以使用mb_strtolower
但是这个功能看起来很慢,除了它们之外并不是每个人都有MB支持。
有任何线索吗?
此致 拉狄克
编辑:好的,非常感谢你的帮助。我认为我的方法不太正确。 我认为使用它会更好:How do I detect non-ASCII characters in a string?然后分别使用strtolower或mb_strtolower(如果可用)。答案 0 :(得分:5)
正则表达式无法自行更改字符,它只能更改其顺序和/或添加其他字符/删除其中一些字符。
有preg_replace_callback或/e标记,但它们只能使用已知函数进行操作,因此无法比strtolower更好。
如果你不能依赖mb_strolower函数的存在,你必须自己实现它。
答案 1 :(得分:0)
您不应该为此使用preg_replace,因为preg_replace用于匹配某个模式并将其替换为其他模式。你想要的是用小写字母替换每个大写字符,所以不需要匹配模式。
mb_strtolower将是你要走的路,如果你没有mb_函数,你将不得不自己编写一个函数,使用很多str_replace ...