スペースとダッシュの後にすべての文字を大文字にしようとしています。明らかに、スペースの後にすべての文字を大文字にすることは問題ではありません。
$string = preg_replace('/[^a-zA-Z-\s]/s', '', $string);
$string = ucwords(strtolower($string));
トリックを行います。
ただし、この正規表現はダッシュの後のすべての文字と一致しているように見えますが、ダッシュの後のすべての文字を大文字にする方法を見つけることができません(答えを信頼している場合)。
どんな助けでも大歓迎です!
私も試しました:
$string = preg_replace('#\b[a-z0-9-_]+#i', strtoupper("$0"), $string);
成功せずに...