如何在字符串中替换所有非单词字符(utf-8)?
表示ASCII:
$url = preg_replace("/\W+/", " ", $url);
是否有UTF-8的等价物?
答案 0 :(得分:2)
使用unicode属性:
$url = preg_replace("/[^\p{L}\p{N}_]+/u", " ", $url);
\p{L}
代表任何字母
\p{N}
代表任何数字。
答案 1 :(得分:2)
您可以使用包含字母,数字和下划线的 Xwd 字符类:
$url = preg_replace('~\P{Xwd}+~u', ' ', $url);
如果您不想使用下划线,可以使用 Xan
\p{Xwd}
(Perl单词字符)是预定义的字符类,\P{Xwd}
是此类的否定。
u
修饰符表示必须将字符串视为unicode字符串。
等价:
\p{Xan} <=> [\p{L}\p{N}]
\p{Xwd} <=> [\p{Xan}_]