ここの投稿の1つで、この表現を見つけました
// Replaces every non-letter, non-digit with a dash
$str = preg_replace('/(?=\P{Nd})\P{L}/u', '-', $str);
それはうまく機能しますが、基本的な句読点とスペースも保持するにはどうすればよいですか?
私はこのようなことを試しました
$str = preg_replace('/(?=\P{Nd})\P{L}\P{P}/u', '-', $str);
また
$str = preg_replace('/[^\P{Nd}\P{L}\P{P}$]/u', '-', $str);
また
$str = preg_replace('/[\P{Nd}\P{L}\P{P}]/u', '-', $str);
そして何も機能しません。