php preg_replace: 替换每个出现的元素(不要分组)

php preg_replace: replace every occurrence of element (don't group)

我使用这个代码:

preg_replace('/[^A-ÿ\d _]+/', 'NO' , $mystring]

要查找并替换所有非字母数字、space 或下划线的内容,请使用 ***

唯一的问题是,如果我的输入是:

tes<<t 

它输出:

tesNOt

我想:

tesNONOt

我希望它能替换所有出现的 'wrong' 字符。

感谢您的帮助!

您的模式匹配 "one or more"。

你想每一个都匹配。

$mystring='tes<<t';
echo preg_replace('/[^A-ÿ\d _]/', 'NO' , $mystring);
// output: tesNONOt

Demo Link