#php
#php
Вопрос:
Я хочу проверить несколько URL-адресов, чтобы проверить, является ли это домашней страницей / доменным именем или URL-адресом внутренней страницы / полного пути, но мой код проверяет только строку без http
или https
, пожалуйста, сообщите мне, что я делаю в ней неправильно.
PHP-код
$urls = [
"http://example.com",
"https://www.example.net",
"http://example.com/page.html?a=123",
"http://example.com/page?a=123",
"http://example.com/",
"https://example.net/",
"example.com",
"demo.example.net"
];
foreach ( $urls as $url) {
if ( preg_match('/^(?!-)(?:(?:[a-zA-Zd][a-zA-Zd-]{0,61})?[a-zA-Zd].){1,126}(?!d )[a-zA-Zd]{1,63}$/', $url)) {
echo "$urls is domain";
} else {
echo "$url is full URL";
}
}
Ожидаемые результаты
http://example.com (domain)
https://www.example.net (domain)
http://example.com/page.html?a=123 (full URL)
http://example.com/page?a=123 (full URL)
http://example.com/ (domain)
https://example.net/ (domain)
example.com (domain)
demo.example.net (domain)
Комментарии:
1. Я бы, наверное, просто использовал php.net/manual/en/function.parse-url.php , и делаю свои выводы из того
path
, длиннее ли оно 1 символа иquery
является ли пустым…2. Да, это будет вариант, но иногда пользователи не используют http или https, поэтому я хочу использовать регулярное выражение. у вас есть какое-либо решение для этого?