我的值为admin,bli
我已使用此代码制作首字母大写
<?php ucfirst('admin,bli'); ?>
我的结果是Admin,bli
我的预期输出是
Admin,Bli
如何在不使用explode函数和for循环的情况下实现此目的?
答案 0 :(得分:4)
<?php
echo join(',', array_map('ucfirst', explode(',', 'bill,jim')));
?>
以逗号分解,使用ucfirst
将每个项目映射到array_map
,并按join
或implode
将其内嵌回来。
我知道你想避免爆炸,但它可能比preg_replace_callback
更快。
答案 1 :(得分:1)
您可以使用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);
});