如果找到两个以上的非字母数字字符,我一直在尝试替换字符串的一部分。
我有部分工作,但当下划线在那里时无法替换。
这就是我的尝试。
$str = "-dxs_ s";
$str = preg_replace('/\W{2,}|\_{2,}/', ' ', $str);
-dxs_ s
中的结果应为-dxs s
。
那么如果在字符串中找到两个或更多非字母数字字符,你如何替换?
答案 0 :(得分:2)
简单
$str = preg_replace('/(\W|_){2,}/', ' ', $str);
这样做是将“非单词或下划线”部分分组,并将2+量词应用于整体。
<强> See it in action 强>
答案 1 :(得分:1)
\W
也排除了_
,因此您需要自己的角色类:
/[^a-zA-Z0-9]{2,}/
或
$result = preg_replace('/[^a-z\d]{2,}/i', ' ', $subject);