Intereting Posts

Удаление URL-адресов из текстовой строки

Можно ли искать и удалять 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-адреса.