php preg_replace请帮助,删除多个单词和单个字符的所有实例

时间:2014-06-29 14:48:06

标签: php regex preg-replace

我有以下

$search_keywords = preg_replace('/\s{1,}(and\s*)*/', ' ', $search_keywords);

从$ search_keywords

中删除单词“and”和任何多余的空格

但是当我尝试添加其他单词以便删除时

$search_keywords = preg_replace('/\s{1,}(and|with\s*)*/', ' ', $search_keywords);

带有和的任何字符串它将删除单词但不删除额外的空格,但它会删除单词“with”和字符串中找到的空格?

我也试过以下

$search_keywords = preg_replace('/\s{1,}(and\s*)(with\s*)*/', ' ', $search_keywords);

但这只适用于“和”这个词,但如果存在,则不会删除“with”这个词。

所以我要做的就是从我的varible中删除所有单词“and”和“with”的实例,并删除任何可能留下的空格。

此外,我想删除自己出现的字符串中的所有单个字符,即: “a”,“i”,“£”,“?”等“任何”单独出现的字符(由空格包围)

所以我要说我的字符串是: “你想要牛排和薯条配芦笋酱吗?”

我希望能够返回以下内容: “想要牛排片芦笋酱”

因此,它删除了以及单个字符 u a 和的

希望能有所作为吗?

感谢任何帮助 感谢

2 个答案:

答案 0 :(得分:1)

您可以使用以下方式更正正则表达式:

$search_keywords = preg_replace('/\s+(\S(\s|$)|((and|with)\s*(\S\s+)?)+)/i', ' ', $search_keywords);

您的正则表达式(and|with\s*)将在with之后允许0或更多空格。

Working Demo

答案 1 :(得分:0)

试试这个:

$search_keywords = preg_replace(array('/\s{1,}(and\s*)*/','/\s{1,}(with\s*)*/'), ' ', $search_keywords);