Можно ли искать и удалять URL-адреса из строки в PHP. Говоря о реальном тексте здесь не HTML. Пример удаления:
mywebsite.com http://mywebsite.org www.mywebsite.co.uk www.my-web-site.net sub.mywebsite.edu etc
Моя проблема заключается в том, что пользователи представляют поле описания и используют его для продвижения своих собственных URL-адресов. Я не уверен, возможно ли это, не создавая слишком много ложных срабатываний. Я думал об обнаружении http: // или www. но это не останавливает такие ссылки, как mywebsite.com
Вы можете попробовать что-то, что ищет .TLD, где TLD – любой существующий домен верхнего уровня, но это может привести к слишком большому количеству ложных срабатываний.
Будет ли возможно внедрить систему, в которой сообщения, содержащие сомнительный контент, должны быть опубликованы, но другие публикуются сразу же? Я предполагаю, что это твердое деловое требование запретить этот тип контента.
Лично я хотел бы просто предотвратить любую гиперссылку и оставить ее на этом. Но это не мое приложение.
Это регулярное выражение, похоже, делает трюк:
!\b(((ht|f)tp(s?))\://)?(www.|[az].)[a-z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-z0-9\.\,\;\?\\'\\\\\+&%\$#\=~_\-]+))*\b!i
Это небольшое изменение этого регулярного выражения из библиотеки регулярных выражений .
Я понимаю, что это немного подавляющее, но этого можно ожидать при поиске URL-адресов. Тем не менее, это соответствует всему, что есть в вашем списке.
Кроме того, вы можете parse_url()
каждое слово в описании и использовать parse_url()
чтобы увидеть, как слово сломается. Я оставлю критерии для определения, является ли это URL-адресом для вас. По-прежнему существует вероятность ложных срабатываний, но они могут быть значительно уменьшены. В сочетании с идеей Эндрю о подделке сомнительного контента для модерации это может быть приемлемым решением.
Вы можете легко использовать регулярное выражение для поиска URL-адресов, а затем указать, что заменить их с помощью функции PHP preg_replace .
http://daringfireball.net/2010/07/improved_regex_for_matching_urls
Изменить. Поскольку это предоставленные пользователем данные, вы можете выполнить некоторую проверку перед сохранением поля «описание» и проверить, содержит ли он URL. Если это так, вы можете запретить пользователю сохранять форму.
Для этого вы можете использовать preg_match , все еще используя регулярное выражение для поиска URL-адреса.