我想执行以下操作,最好使用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"
。
我如何以最有效的方式做到这一点?
答案 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有帮助。