用正则表达式改变大小写

问题描述:

我一直在找这个,但没能找到答案。我需要在PHP中将字符串更改为小写。
当然,这可以通过使用strtolower()来完成,但我想知道是否可以通过preg_replace()来完成。
我注意到,在vim中,可以在后面的引用中使用\L\U修饰符将case改为lower或upper。用正则表达式改变大小写

在PHP中可以这样做,即在preg_replace()的第二个参数中?我想通过preg_replace()来更改案例的原因是我听说它可能对UTF8字符串更好(不确定它是否正确)。

谢谢。

+0

看看[我早先的答案](http://*.com/a/15349032/)。你可以用'e'修饰符来做,但这很糟糕。我建议用'preg_replace_callback()'来做'。 – HamZa 2013-05-01 07:36:04

你实际上应该只使用

mb_strtolower($str, 'UTF-8') 

这样,你指定UTF-8编码,并且都应该很好地工作。

编辑:对不起有strtoupper,改为更低。此外,你可以离开utf-8,它应该应该自动检测编码和使用正确的。

+1

+1。请记住,此扩展程序默认情况下未启用。请参阅http://php.net/manual/en/book.mbstring.php了解如何启用它。 – naththedeveloper 2013-05-01 07:17:36

+0

是的,但mb_strtolower()可能不可用,因为mbstring是非默认扩展。 – baa2w 2013-05-01 07:52:00

用preg_replace做什么是几乎不可能

这是因为您需要将strtolower()/strtoupper()作为参数传递给preg_replace函数。由于preg_replace不能对自己采取行动。

与功能Dave建议。