Как проверить доменное имя в PHP?

После того, как вы прочитали через Интернет, ответ вы не можете! Вы можете удалить все или ничего. Обходной путь может быть примерно следующим:

$(document).on('click', '.btn', function (ev) {
    alert('pressed');
    $(this).removeClass("btn");
});

Demo @ Fiddle

Пример HTML:




29
задан kender 19 November 2009 в 07:12
поделиться

5 ответов

Ваше регулярное выражение в порядке, но вы неправильно используете preg_match . Он возвращает int (0 или 1), а не логическое значение. Просто напишите if (! Preg_match ($ regex, $ string)) {...}

2
ответ дан 27 November 2019 в 21:19
поделиться

Регулярное выражение - наиболее эффективный способ проверки правильности домена. Если вы твердо настроены не использовать регулярное выражение (что IMO глупо), вы можете разделить каждую часть домена:

  • www. / sub-domain
  • имя домена
  • .extension

Затем вам нужно будет проверять каждый символ в каком-то цикле, чтобы убедиться, что он соответствует допустимому домену.

Как я уже сказал, это гораздо больше эффективно использовать регулярное выражение.

3
ответ дан 27 November 2019 в 21:19
поделиться

Я думаю, что как только вы выделите доменное имя, скажем, используя идею Эрклана:

$myUrl = "http://www.domain.com/link.php";
$myParsedURL = parse_url($myUrl);
$myDomainName= $myParsedURL['host'];

вы могли бы использовать:

if( false === filter_var( $myDomainName, FILTER_VALIDATE_URL ) ) {
// failed test

}

Функции фильтра PHP5 предназначены именно для такой цели, как я мог подумать.

Это не совсем ответ на ваш вопрос, так как он не использует Regex, насколько я понимаю.

6
ответ дан 27 November 2019 в 21:19
поделиться

Вот еще один способ без регулярного выражения.

$myUrl = "http://www.domain.com/link.php";
$myParsedURL = parse_url($myUrl);
$myDomainName= $myParsedURL['host'];
$ipAddress = gethostbyname($myDomainName);
if($ipAddress == $myDomainName)
{
   echo "There is no url";
}
else
{
   echo "url found";
}
4
ответ дан 27 November 2019 в 21:19
поделиться

Если вы не хотите использовать регулярные выражения, вы можете попробовать следующее:

$str = 'domain-name';

if (ctype_alnum(str_replace('-', '', $str)) && $str[0] != '-' && $str[strlen($str) - 1] != '-') {
    echo "Valid domain\n";
} else {
    echo "Invalid domain\n";
}

, но, как сказано, регулярные выражения - лучший инструмент для этого.

1
ответ дан 27 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: