Php 使用正则表达式替换单词

Php 使用正则表达式替换单词,php,regex,preg-replace,Php,Regex,Preg Replace,我有一个网站和用户内容需要在发布前过滤(评论等)。目前,我有一个系统,可以根据单词列表扫描发布的内容,然后用星号替换这些单词 这适用于单个单词,但我现在正在寻找替换单词序列,我有点迷路了 例如,我们将使用PayPal。目前,我的正则表达式找到并替换了这个fine,但是如果我想搜索并替换“paypal”,它就不会。以下是我的替换代码,到目前为止,它适用于单个单词: $word = $words->word; $length = strlen($word); $replacement = s

我有一个网站和用户内容需要在发布前过滤(评论等)。目前,我有一个系统,可以根据单词列表扫描发布的内容,然后用星号替换这些单词

这适用于单个单词,但我现在正在寻找替换单词序列,我有点迷路了

例如,我们将使用PayPal。目前,我的正则表达式找到并替换了这个fine,但是如果我想搜索并替换“paypal”,它就不会。以下是我的替换代码,到目前为止,它适用于单个单词:

$word = $words->word;
$length = strlen($word);

$replacement = str_repeat('*', $length);

$newContent = preg_replace('/\b'.$word.'\b/i', $replacement, $content);
因此,我需要它将“pay pal”替换为“***

理想情况下,该空间将是一个通配符,用于拾取诸如“pay_pal”之类的内容,但这只是一个很好的选择

我玩了很多次,但都没用

澄清-我如何修改此项以替换两个单词和一个单词

$newContent = preg_replace('/\b'.$word.'\b/i', $replacement, $content);
那太糟糕了。真的,真的很糟糕。这就像坐直升机在离家20米远的地方购物一样

对于完全实心的文本块,请使用
str\u replace()

对于更复杂的“PayPal”,我建议您以“Pay*Pal”或其他方式存储它。例如:

$badWord = 'Pay*Pal';
$pattern = '~\b'.str_replace('*','.?',$badWord).'\b~Ui'; 
// dont use 'i' flag if you want it case-sensitive
$newContent = preg_replace($pattern, $replacement, $content);

那很好。祝你好运。你有问题吗?我想这在我的帖子中很明显…问题中有一个
。这里有一个问题-你为什么这么迟钝?我只是简单地解释我已经有了什么,只是问如何修改它。已经有类似的帖子了,但是没有一篇提到我的问题,所以我解释它是为了确保人们正确理解。为什么你在$badWord中使用
*
,为什么不直接使用
呢?因为$badWord应该是一个正则表达式,这样你就可以使用
*
来实现它的目的。你完全正确。这只是一个例子,我的目标是尽可能容易地存储不好的单词,即使对非程序员也是如此<代码>*比
更直观的通配符。
$badWord = 'Pay*Pal';
$pattern = '~\b'.str_replace('*','.?',$badWord).'\b~Ui'; 
// dont use 'i' flag if you want it case-sensitive
$newContent = preg_replace($pattern, $replacement, $content);