如果发现两个或多个非字母数字字符,我一直在尝试替换字符串的一部分。
我让它部分工作,但不能替换当一个下划线在那里。
这就是我正在尝试的。
$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);