如果单词包含特定字符串,请删除整个单词

时间:2010-10-08 21:28:53

标签: php string replace

我想执行以下操作,最好使用PHP:

如果单词的一部分包含特定字符串,则删除整个单词。这应该是不区分大小写的并且可以多次工作,例如在大文本上。

的伪代码:

match = "www."
lots_of_random_text = "... hello and welcome to www.stackoverflow.com! blah blah"
result = magic_function(lots_of_random_text, "www.")

结果现在应该等于:"... hello and welcome to blah blah"

我如何以最有效的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

似乎正则表达式适合这项任务。请查看docs for preg_match开头,或main PCRE docs查看完整概述。

php> $text="hello and welcome to www.stackoverflow.com snout pickle and while you're here, check out a unicorn at www.unicornmagicfairywonderland.net!";
php> $cleaned_text=preg_replace('#www\.[\w\d]+\.(com|net|org)#','',$text);
php> echo $cleaned_text;    
hello and welcome to  snout pickle and while you're here, check out a unicorn at !

关键部分是'#www。[\ w \ d] +。(com | net | org)#'。这意味着匹配任何以www。开头的字符串,包含任意数量的单词字符或数字,并以.com,.net或.org结尾。

如果您尝试替换任何URL,表达式将比此复杂得多,因此请注意这是不完整的。你想确保它匹配以http://开头的单词,没有www。或者有一个不同的子域名,并以.co.uk或.edu等其他域名结束,对吗?

正则表达式通常很复杂且难以正确使用。您可能会发现www.regular-expressions.info有帮助。