preg_replace
只替换一次?我想从一个句子中删除不需要的单词,为什么在这种情况下,"an"没有被替换?
modifier
部分应该设置什么?
$items = "This is an apple... ";
echo preg_replace('/ an | is /i',' ',$items);
//This an apple...
我需要返回"这个苹果…",谢谢。
用圆括号括起来,并用字边界('b
)括起来:
$items = "This is an apple... ";
echo preg_replace('/'b(an|is)'b/i', ' ', $items);
//This apple
您可以使用以下命令删除多余的空格:
$items = "This is an apple... ";
echo trim(preg_replace(array('/'b(an|is)'b/i', '/[ ]+/'), ' ', $items));
// ^^^^^^
//This apple
另一个相同代码的例子:
$items = "An apple, this is";
echo trim(preg_replace(array('/'b(an|is)'b/i', '/[ ]+/'), ' ', $items));
//apple, this
正如@Mark B
所评论的那样,您的regex没有给出预期的结果,因为第一次替换正在为[space]is[space]
发生,并且从下一个匹配[space]an[space]
中删除尾随空间,因此您得到This an apple...
。
下面是使用preg_replace的正确方法:
$items = "This is an apple... ";
echo '[' . preg_replace('/ *(?<= )(an|is)(?= ) */i', ' ', $items) . "]'n";
// OUTPUT: [This apple... ]