|
|
|
| подскажите рег . выру . что-б проверить правельность введения дом. имени . интересует синтаксис доменов и поддоменов . | |
|
|
|
|
|
|
|
для: dimon4ik
(26.06.2008 в 20:14)
| | Если в php, то можно проверить функцией gethostbyname() - она возвратит ip-адрес домена, если данный домен существует. Но если нужно проверить только синтаксис, то в доменном имени могут присутствовать a-zA-Z0-9_ , отделённые точкой. Есть ещё русскоязычные доменные имена, состоящие из русских букв. Возможно есть домены и на других языках. Но если мультиязычные домены в рассчёт не брать, то самый простой вариант будет выглядеть так: preg_replace('/[a-z0-9_\.]{4,}/i',$domain) | |
|
|
|
|
|
|
|
для: Phantom
(26.06.2008 в 20:51)
| | я пробую вот так :
<?
$stop='';
$forename='ddik.mysite.biz';
$domain = strtolower(trim($forename));
if (strlen($domain)<3 or strlen($domain)>63) $stop .= '<li>error </li>';
if(ereg("^-|-$",$domain))
{
$stop .= "<li>error</li>";
}
if(!ereg("([a-z]|[A-Z]|[0-9]|-){".strlen($domain)."}",$domain))
{
$stop .= "<li>error 1</li>";
}
echo $stop;
?>
|
Но получаю ошибку !
что я делаю нетак ? | |
|
|
|
|
|
|
|
для: dimon4ik
(26.06.2008 в 21:22)
| | Ой. Извиняюсь. Я сам ошибку допустил. Якоря забыл и вместо символа "тире" написал "нижний дефис" ;-)
Надо так:
if(preg_replace('/^([a-z0-9\.-]{4,})$/i',$domain)){
}
|
У тебя вообще код какой-то странный.
1) Зачем динамически размер подставлять в регулярное выражение?
2) Зачем размер до регулярного выражения проверять?
Можно сразу размер указать в регулярном выражении.
3) Само регулярное выражение вообще страшное. Так не делают.
Сделай так:
<?
$stop='';
$forename='ddik.mysite.biz';
$domain = strtolower(trim($forename));
if(!preg_replace('/^([a-z0-9\.-]{4,64})$/i',$domain)){
$stop = "<li>error</li>";
} else {
// всё в порядке, домен введён правильно =)
}
echo $stop;
?>
|
| |
|
|
|
|
|
|
|
для: Phantom
(26.06.2008 в 22:13)
| | Сделал . и получил :
Warning: Wrong parameter count for preg_replace() in /home/kievhost.biz/data/www/kievhost.biz/5.php on line 107
# error | |
|
|
|
|
|
|
|
для: Phantom
(26.06.2008 в 20:51)
| | автор: dimon4ik (26.06.2008 в 20:14) письмо автору
>подскажите рег . выру . что-б проверить правельность введения дом. имени . интересует >синтаксис доменов и поддоменов
автор: Phantom (26.06.2008 в 22:13)
>Если в php, то можно проверить функцией gethostbyname() - она возвратит ip-адрес домена,
И зачем нужен ip, если требуется корректность введеного домена.
>Есть ещё русскоязычные доменные имена, состоящие из русских букв. Возможно есть >домены и на других языках.
Национальные домены пока еще не приняты.
>самый простой вариант будет >выглядеть так: preg_replace('/[a-z0-9_\.]{4,}/i',$domain)
Полная чушь.
to dimon4ik
<?php
$t="domain.com";
preg_match("#^[a-z\d_\.-]+\.[a-z]{2,6}$#i", $t) ? print "Правильно" : print " Неправильно";
?>
|
P.S. нижний пробел (_) если есть домены 3-его уровня и дальше. | |
|
|
|
|
|
|
|
для: AcidTrash
(26.06.2008 в 22:58)
| | Пардон. Ступил конкретно. Не прег_реплэйс, а конечно же прег_матч =)
На счёт "Национальные домены пока еще не приняты.":
http://www.ьфшдюкг.com - как пример.
На счёт "И зачем нужен ip, если требуется корректность введеного домена.":
Это я просто, может пригодится, если не просто на сантаксис нужно проверить домен, а на существование.
На счёт "нижний пробел (_) если есть домены 3-его уровня и дальше.":
Хм, не знал. | |
|
|
|
|
|
|
|
для: AcidTrash
(26.06.2008 в 22:58)
| | а ваш вариант , на любой (даже бредовый домен типа ****////////kkkkkk.mysite.biz ) выдает что все норма . | |
|
|
|
|
|
|
|
для: dima2207
(27.06.2008 в 05:08)
| | >даже бредовый домен типа ****////////kkkkkk.mysite.biz
Да что Вы говорите!
Ну попробуйте этот свой домен ****////////kkkkkk.mysite.biz, для меня даже пробовать не надо, изначально видно, что такое не пропустит! Если конечно вы хоть чуток разбираетесь в регулярках.
P.S.
А если уж говорить о тире, точке, нижнего пробела в начале домена, то можно сделать так
<?php
$t="domain.com";
preg_match("#^[^-\._][a-z\d_\.-]+\.[a-z]{2,6}$#i", $t) ? print "Правильно" : print " Неправильно";
?>
|
| |
|
|
|