1

我有这样的价值admin,bli

我已使用此代码将第一个字母大写

<?php ucfirst('admin,bli'); ?>

我的结果是Admin,bli

我的预期输出是

Admin,Bli

如何在不使用explode 函数和for 循环的情况下实现这一点?

4

2 回答 2

5
<?php
    echo join(',', array_map('ucfirst', explode(',', 'bill,jim')));
?>

用逗号分解,使用映射ucfirst每个项目,然后用or分解array_map它。joinimplode

我知道你想避免爆炸,但它可能比preg_replace_callback无论如何都快。

于 2015-03-18T12:07:45.563 回答
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);
});
于 2015-03-18T12:08:54.093 回答