Остановка IP-адресов и поддоменов, разрешены только домены - PullRequest
1 голос
/ 01 ноября 2011

Я хочу полностью остановить все IP и субдомены.Кто-то редактирует / изменяет его, чтобы он не добавлял IP-адреса и субдомены в базу данных.Я хочу только основной (домен верхнего уровня) в моей базе данных.Вот шаблон, который я использую:

$pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/';

if (preg_match($pattern, $url) ) {
header("Location: good.php");
} else {
header("Location: bad.php");
die();
}

1 Ответ

2 голосов
/ 01 ноября 2011

Домен верхнего уровня содержит только буквы. Вот список ДВУ .

Полагаю, вы хотели сказать «домены второго уровня», но даже это доставит вам неприятности. Например, .co.uk является очень популярным SLD, но он не используется для веб-сайта или чего-либо еще. Домены, которые вы упоминаете, находятся на третьем уровне, ниже этого SLD. (Anycompanywebsite.co.uk).

Итак, я говорю, что вы не можете сделать это с помощью простого регулярного выражения. Вам понадобится список второго, третьего и даже четвертого уровней, которые используются так, как если бы они были TLD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...