逗号分隔值后的 ucfirst

ucfirst after comma separated value

我的值像 admin,bli

我用这个代码把首字母大写了

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

我的结果是Admin,bli

我的预期输出是

Admin,Bli

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

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

按逗号分解,使用 array_map 映射 ucfirst 每个项目,然后按 joinimplode.

将其分解回来

我知道你想避免爆炸,但无论如何它可能比 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);
});