Удалить все слово, если слово содержит определенную строку - PullRequest
0 голосов
/ 09 октября 2010

Я хотел бы сделать следующее, желательно с 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 Ответ

1 голос
/ 09 октября 2010

Кажется, что регулярное выражение подойдет для этой задачи.Проверьте документы для preg_match для начала или основные документы PCRE для полного обзора.

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.[\ ш \ г] + (ком | чистый | орг). #».Это означает совпадение с любой строкой, которая начинается с www., Имеет любое количество слов или цифр и заканчивается на .com, .net или .org.

Если вы пытаетесь заменить любой URL, выражениебудет намного сложнее, чем это, так что будьте осторожны, это неполно.Вы хотите убедиться, что он соответствует словам, которые начинаются с http://, и не имеют www.или иметь другой поддомен, и заканчиваться другими доменами, такими как .co.uk или .edu, верно?

Регулярные выражения, как правило, сложны и сложны для понимания. www.regular-expressions.info может оказаться полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...