【发布时间】:2014-02-26 17:53:06
【问题描述】:
如何替换字符串中的所有非单词字符(utf-8)?
对于 ASCII:
$url = preg_replace("/\W+/", " ", $url);
UTF-8 有什么等价物吗?
【问题讨论】:
如何替换字符串中的所有非单词字符(utf-8)?
对于 ASCII:
$url = preg_replace("/\W+/", " ", $url);
UTF-8 有什么等价物吗?
【问题讨论】:
您可以使用包含字母、数字和下划线的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}_]
【讨论】:
Xwd属性。
使用 unicode 属性:
$url = preg_replace("/[^\p{L}\p{N}_]+/u", " ", $url);
\p{L} 代表任意字母\p{N} 代表任意数字。
【讨论】:
/u 修饰符。