Regex PHP utf8 preg_替换

Regex PHP utf8 preg_替换,regex,utf-8,preg-replace,Regex,Utf 8,Preg Replace,在这里的一篇帖子中,我发现了这个表达 // 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); 或 或 什么都不管用。那么: [^\p{

在这里的一篇帖子中,我发现了这个表达

    // 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);

什么都不管用。

那么:

[^\p{N}\p{L}\p{P}\s]
用法:

$str = preg_replace('/[^\p{N}\p{L}\p{P}\s]/u', '-', $str);
[^\p{N}\p{L}\p{P}\s]
$str = preg_replace('/[^\p{N}\p{L}\p{P}\s]/u', '-', $str);