Регулярное выражение по поиску ссылок

97
15 февраля 2021, 14:40

Почему слово Anet программа воспринимает как часть домена .net? Хотя если прописать просто net то, всё будет хорошо. Так же и с другими зонами.

$string = "Anet";
if (!preg_match ("/http|https|www|.ru|.com|.net|.info|.org/i", $string)) {
   echo "Нет ссылки";
} else { 
   echo "Есть ссылка";
}
Answer 1

Почему слово Anet программа воспринимает как часть домена .net?

Потому что символ точки в регулярных выражениях соответствует почти любому символу. Исключение составляют символы перевода на новую строку, но если указан модификатор s - точка будет соответствовать любым символам. Как было сказано в комментарии, для поиска символа точки достаточно её экранировать:

$string = "Anet";
if (! preg_match('~https?|www|\.(?:ru|com|net|info|org)~i', $string)) {
    echo "Нет ссылки";
} else {
    echo "Есть ссылка";
}
READ ALSO
проблемы с синхронизацией проекта с gradle

проблемы с синхронизацией проекта с gradle

Помогите пожалуйста не могу синхронизировать проект с gradle пишет bad_certificates хотя у меня в настройках сертификации с сервером принимаются автоматически...

88
Исключение InputMismatchException при вводе в функции nextInt()

Исключение InputMismatchException при вводе в функции nextInt()

Не понимаю, почему не работает ввод строки purchName? Если поменять местами 20 и 21 строку местами, то считывает число, и когда доходит до ввода строки,...

121