将破折号或空格 (PHP) 后的每个字母大写


capitalize every letter after dash or space (PHP)

我试图将空格和破折号后的每个字母大写。显然,将空格后的每个字母大写不是问题:

$string = preg_replace('/[^a-zA-Z-'s]/s', '', $string);
$string = ucwords(strtolower($string));

能解决问题。

但是,我找不到将破折号后的每个字母

大写的方法,尽管这个正则表达式似乎与破折号后的每个字母都匹配(如果我相信答案的话)。

任何帮助不胜感激!

我也试过:

$string = preg_replace('#'b[a-z0-9-_]+#i', strtoupper("$0"), $string);

没有成功...

preg_replace_callback('/(?<=( |-))./',
                      function ($m) { return strtoupper($m[0]); },
                      $string);

/(?<=( |-))./"任何字符(.)前面有((?<=))空格或破折号(( |-))"。