在这里的一篇文章中,我发现了这个表达式
// 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);
没有任何效果。