从字符串中删除数组中的所有单词实例

IMU*_*IxD 0 php regex string

我想知道在PHP中执行以下操作的最佳方法是什么.

我有一个要忽略的单词数组,我想从字符串中删除这些单词的所有实例.但无论数组中每个元素的单词是什么,它都必须是单词.

一个例子:

如果数组是:

$ignoreList = array(
    "1" => "one",
    "2" => "at",
    "3" => "chicken",
    "4" => "the"
);
Run Code Online (Sandbox Code Playgroud)

而字符串是

$str = "The one quick brown fox, at the farm, jumped over the lazy dog and ate a chicken";
Run Code Online (Sandbox Code Playgroud)

在这个操作之后,字符串将是"快速的棕色狐狸,农场,跳过懒狗,吃了一个".

字符串不必包含这些单词,但如果有,则删除它们.

怎么会这样做?

elc*_*nrs 7

你可以使用快速正则表达式:

$str = preg_replace('/\b('. implode('|',$ignoreList) .')\b/i', '', $str);
Run Code Online (Sandbox Code Playgroud)

\b 是字分隔符.

  • 你需要在parens中包含一组单词.你现在拥有的基本上是`\ bone`或`at`或`chicken`或`\ b` (3认同)
  • @CrayonViolent:+1.或''\ b |\b'`上的`implode` (2认同)