我试图将空格和破折号后的每个字母大写。显然,将空格后的每个字母大写不是问题:
$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);
/(?<=( |-))./
是"任何字符(.
)前面有((?<=)
)空格或破折号(( |-)
)"。