Возможный дубликат:
Проверка / регулярное выражение PHP для URL-адреса
Как проверить доменное имя с помощью Regex и Php ?
В настоящее время я использую этот шаблон регулярного выражения для проверки доменных имен перед их добавлением в мою базу данных:
$pattern = '/^https?:\/\/([a-zA-Z0-9_\-]+:[^\s@:]+@)?((([a-zA-Z][a-zA-Z0-9\-]+\.)+[a-zA-Z\-]+)|((2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})\.(2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})\.(2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})\.(2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})))(:[0-9]{1,5})?(\/[!~*\'\(\)a-zA-Z0-9;\/\\\?:\@&=\+\$,%#\._-]*)*$/';
Этот шаблон разрешает поддомены, строки ipv4 и т. Д. Поскольку это для каталога, он не разрешает строки, которые обычно действительны, такие как http://localhost
, но в любом случае мне нужно добавить поддержку строк IP ipv6, а также международных доменных имен. например, müller.com
В настоящее время я использую:
$url = "http://müller.com/"
if(preg_match($pattern,$url)) {
echo "valid";
} else {
echo "invalid";
}
и он проверяет почти все, что я хочу, чтобы он проверял, кроме адресов ipv6 и иностранных символов.
Интересно, сможет ли кто-нибудь придумать эти два дополнения, потому что они действительно сделают мой день. Имейте в виду, что я новичок в PHP, поэтому, пожалуйста, не бросайтесь в меня чем-то. Вместо этого было бы гораздо полезнее, если бы вы могли показать мне рабочий пример и объяснить, что вы добавили.
Возможно, перед проверкой требуется преобразовать посторонний материал в действительный URL-адрес punycode, а затем разрешить использование punycode. Я открыт для предложений.
Большое вам спасибо - ваша помощь очень ценится
Изменить: я сомневаюсь, что этот вопрос является дубликатом, так как я не ищу аналогичного решения, плюс упомянутые существующие не работают. FILTER_VALIDATE_URL не работает, поскольку он разрешает строки, которые я не хочу разрешать, а другие решения также делают мой шаблон регулярного выражения бесполезным.
Я ищу то, что у меня есть, но дополнительно поддерживает IP-строки ipv6 и имена punycode / международные имена.
FILTER_VALIDATE_URL
для _ 2_. - person DaveRandom   schedule 09.10.2012...{2}|[0-9]{1,2}))|<HERE>)(:[0-9]{1,5})?...
- person Carlos   schedule 09.10.2012