例如:
abc-def-xyz
至abcDefXyz
the-fooo
至theFooo
等
执行此PHP的最有效方法是什么?
这是我的看法:
$parts = explode('-', $string);
$new_string = '';
foreach($parts as $part)
$new_string .= ucfirst($part);
$new_string = lcfirst($new_string);
但我觉得可以用更少的代码完成:)
ps:祝每个人节日快乐! :d答案 0 :(得分:8)
$parts = explode('-', $string);
$parts = array_map('ucfirst', $parts);
$string = lcfirst(implode('', $parts));
如果有人在连字符分隔的字符串中使用大写字符,您可能希望将第一行替换为$parts = explode('-', strtolower($string));
。
答案 1 :(得分:2)
$subject = 'abc-def-xyz';
$results = preg_replace_callback ('/-(.)/', create_function('$matches','return strtoupper($matches[1]);'), $subject);
echo $results;
答案 2 :(得分:1)
如果有效,为什么不使用它?除非您正在解析大量的文本,否则您可能不会注意到这些差异。
我唯一看到的是,使用你的代码,第一个字母也会被大写,所以也许你可以添加这个:
foreach($parts as $k=>$part)
$new_string .= ($k == 0) ? strtolower($part) : ucfirst($part);
答案 3 :(得分:1)
str_replace('-', '', lcfirst(ucwords('foo-bar-baz', '-'))); // fooBarBaz
ucwords
接受一个单词分隔符作为第二个参数,因此我们只需要传递一个连字符然后用lcfirst
小写第一个字母,最后用str_replace
删除所有连字符。< / p>