如何使用preg_replace将字符串转换为小写

时间:2012-03-30 07:58:05

标签: php regex unicode preg-replace

我只是坚持这个并且找不到解决方案。 我想尝试使用preg_replace将字符串转换为小写。 我只是无法创建正确的正则表达式。 原因是普通strtolower不支持unicode字符。 我知道我可以使用mb_strtolower但是这个功能看起来很慢,除了它们之外并不是每个人都有MB支持。

有任何线索吗?

此致 拉狄克

编辑:好的,非常感谢你的帮助。我认为我的方法不太正确。 我认为使用它会更好:How do I detect non-ASCII characters in a string?然后分别使用strtolower或mb_strtolower(如果可用)。

2 个答案:

答案 0 :(得分:5)

正则表达式无法自行更改字符,它只能更改其顺序和/或添加其他字符/删除其中一些字符。

preg_replace_callback/e标记,但它们只能使用已知函数进行操作,因此无法比strtolower更好。

如果你不能依赖mb_strolower函数的存在,你必须自己实现它。

答案 1 :(得分:0)

您不应该为此使用preg_replace,因为preg_replace用于匹配某个模式并将其替换为其他模式。你想要的是用小写字母替换每个大写字符,所以不需要匹配模式。

mb_strtolower将是你要走的路,如果你没有mb_函数,你将不得不自己编写一个函数,使用很多str_replace ...