我有这样的价值admin,bli
我已使用此代码将第一个字母大写
<?php ucfirst('admin,bli'); ?>
我的结果是Admin,bli
我的预期输出是
Admin,Bli
如何在不使用explode 函数和for 循环的情况下实现这一点?
<?php
echo join(',', array_map('ucfirst', explode(',', 'bill,jim')));
?>
用逗号分解,使用映射ucfirst
每个项目,然后用or分解array_map
它。join
implode
我知道你想避免爆炸,但它可能比preg_replace_callback
无论如何都快。
您可以使用preg_replace_callback()
:
echo preg_replace_callback("/[^,]*/", function($m) {
return ucfirst($m[0]);
}, $str);
该模式在单词边界之后搜索小写字母并将其替换为大写版本。
另一种方法是使用array_reduce()
:
echo array_reduce(explode(',', $str), function($a, $b) {
return $a ? $a . ',' . ucfirst($b) : ucfirst($b);
});