PHP替换两个或多个非字母数字字符


php replace if two or more non alphanumeric characters

如果发现两个或多个非字母数字字符,我一直在尝试替换字符串的一部分。

我让它部分工作,但不能替换当一个下划线在那里。

这就是我正在尝试的。

$str = "-dxs_  s";
$str = preg_replace('/'W{2,}|'_{2,}/', ' ', $str);

结果-dxs_ s应该是-dxs s

那么,如果在字符串中发现两个或多个非字母数字字符,该如何替换呢?

简写

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

这样做的是将"非单词或下划线"部分分组,并将2+量词作为一个整体应用于它。

查看效果

'W也不包括_,因此您需要自己的字符类:

/[^a-zA-Z0-9]{2,}/

$result = preg_replace('/[^a-z'd]{2,}/i', ' ', $subject);