使用 preg_replace 将单词的首字母大写
我需要将始终小写的名称变成大写。
例如约翰·约翰逊
-> John Johnsson
还有:
jonny-bart johnsson
-> Jonny-Bart Johnsson
如何使用 PHP 完成此任务?
I need to turn names that are always in lower case into uppercase.
e.g. john johnsson
-> John Johnsson
but also:
jonny-bart johnsson
-> Jonny-Bart Johnsson
How do I accomplish this using PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您还可以使用正则表达式:
\b
表示单词边界,\p{Ll}
描述 Unicode 中的任何小写字母。preg_replace_callback
将为每场比赛调用一个名为callback
的函数,并且将匹配项替换为其返回值:这里
mb_strtoupper
用于将匹配到的小写字母转成小写为大写。You could also use a regular expression:
\b
represents a word boundary and\p{Ll}
describes any lowercase letter in Unicode.preg_replace_callback
will call a function calledcallback
for each match and replace the match with its return value:Here
mb_strtoupper
is used to turn the matched lowercase letter to uppercase.如果您期望使用 unicode 字符...或者即使您不期望,我建议使用 mb_convert_case。当有 php 函数可以实现此目的时,您不需要使用 preg_replace 。
If you're expecting unicode characters...or even if you're not, I recommend using mb_convert_case nonetheless. You shouldn't need to use preg_replace when there's a php function for this.
来自 PHP 手册条目
ucwords
的评论。From comments on the PHP manual entry for
ucwords
.使用正则表达式:
with regexps:
这是我想出的(经过测试)...
或者如果你有 php 5.3+,这可能会更好(未经测试):
我的解决方案比其他发布的一些解决方案更冗长,但我相信它提供了最好的灵活性(您可以修改
$chars
字符串来更改可以分隔名称的字符)。Here's what I came up with (tested)...
Or if you have php 5.3+ this is probably better (untested):
My solution is a bit more verbose than some of the others posted, but I believe it offers the best flexibility (you can modify the
$chars
string to change which characters can separate names).