preg_replace
只能更换一次吗?我想从一个句子中删除不需要的词,为什么在这种情况下,“一个”还没有被取代?
http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
在modifier
部分,我应该设置什么?
$items = "This is an apple... ";
echo preg_replace('/ an | is /i',' ',$items);
//This an apple...
我需要回复“这个苹果......”,而不是。
答案 0 :(得分:3)
将它放在括号中并用单词边界(\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
答案 1 :(得分:0)
由@Mark B
评论你的正则表达式没有给出预期的结果,因为[space]is[space]
发生了第一次替换,并且从下一个匹配[space]an[space]
中删除了尾随空格,因此你得到{ {1}}。
以下是使用lookahead和lookbehind在您的案例中使用preg_replace的正确方法:
This an apple...