我试图在空间和破折号之后把每个字母都用掉.显然,在空格之后将每个字母大写都不是问题:
$string = preg_replace('/[^a-zA-Z-\s]/s', '', $string);
$string = ucwords(strtolower($string));
Run Code Online (Sandbox Code Playgroud)
诀窍.
但是,我找不到一种方法可以在破折号之后将每个字母大写,尽管这个正则表达式似乎与破折号后的每个字母相匹配(如果我相信答案).
任何帮助表示赞赏!
我也尝试过:
$string = preg_replace('#\b[a-z0-9-_]+#i', strtoupper("$0"), $string);
Run Code Online (Sandbox Code Playgroud)
没有成功...
preg_replace_callback('/(?<=( |-))./',
function ($m) { return strtoupper($m[0]); },
$string);
Run Code Online (Sandbox Code Playgroud)
/(?<=( |-))./是"任何字符(.)前面带((?<=))空格或短划线(( |-))".