如果两个或多个非字母数字字符,则替换php

时间:2011-12-04 23:52:35

标签: php regex preg-replace

如果找到两个以上的非字母数字字符,我一直在尝试替换字符串的一部分。

我有部分工作,但当下划线在那里时无法替换。

这就是我的尝试。

$str = "-dxs_  s";

$str = preg_replace('/\W{2,}|\_{2,}/', ' ', $str);

-dxs_ s中的结果应为-dxs s

那么如果在字符串中找到两个或更多非字母数字字符,你如何替换?

2 个答案:

答案 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);