用正则表达式改变大小写
我一直在找这个,但没能找到答案。我需要在PHP中将字符串更改为小写。
当然,这可以通过使用strtolower()
来完成,但我想知道是否可以通过preg_replace()
来完成。
我注意到,在vim中,可以在后面的引用中使用\L
或\U
修饰符将case改为lower或upper。用正则表达式改变大小写
在PHP中可以这样做,即在preg_replace()
的第二个参数中?我想通过preg_replace()
来更改案例的原因是我听说它可能对UTF8
字符串更好(不确定它是否正确)。
谢谢。
你实际上应该只使用
mb_strtolower($str, 'UTF-8')
这样,你指定UTF-8编码,并且都应该很好地工作。
编辑:对不起有strtoupper,改为更低。此外,你可以离开utf-8,它应该应该自动检测编码和使用正确的。
+1。请记住,此扩展程序默认情况下未启用。请参阅http://php.net/manual/en/book.mbstring.php了解如何启用它。 – naththedeveloper 2013-05-01 07:17:36
是的,但mb_strtolower()可能不可用,因为mbstring是非默认扩展。 – baa2w 2013-05-01 07:52:00
用preg_replace做什么是几乎不可能。
这是因为您需要将strtolower()
/strtoupper()
作为参数传递给preg_replace
函数。由于preg_replace
不能对自己采取行动。
与功能Dave建议。
看看[我早先的答案](http://*.com/a/15349032/)。你可以用'e'修饰符来做,但这很糟糕。我建议用'preg_replace_callback()'来做'。 – HamZa 2013-05-01 07:36:04