Страница 1 из 1
[PHP] регулярку подправить не получается
Добавлено: 2011-10-26 14:34:18
Alex Keda
Код: Выделить всё
/^([a-z0-9абвгдеёжзийклмнопрстуфхцчшщьыъэюя]([a-z0-9абвгдеёжзийклмнопрстуфхцчшщьыъэюя\-]*[a-z0-9абвгдеёжзийклмнопрстуфхцчшщьыъэюя])*\.)+[a-zрф]{2,4}$/ui
это проверка доменного имени на валидность.
всё хорошо, но, автор не учёл что доменное имя не может быть короче трёх символов (потому как все двухбуквенники зарезервированы), и, несмотря на то что такие имена есть - заюзать их нельзя.
также, оно не может быть длинней 63 символов
невкурю, куда добавить {3,63} чтоб правильно чекало...
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-10-26 14:39:18
hedgehog
вместо {2,4} , только в этом случае "рф" маловато смысла имеет
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-10-26 14:49:03
hizel
автор русофоб, что национальные домены только в РФ штоле?
Код: Выделить всё
/^([\w\d]([\w\d\-]*[\w\d]){2,62}\.)+\w{2,4}$/ui
держи и не греши
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-10-26 16:05:44
Alex Keda
изначально, их нигде не было, вообще

Re: [PHP] регулярку подправить не получается
Добавлено: 2011-11-01 9:32:42
Alex Keda
Код: Выделить всё
srv0# php /tmp/b.php
ERR
srv0# cat /tmp/b.php
<?php
$domain = 'майгимгим.рф';
if(preg_match('/^([\w\d]([\w\d\-]*[\w\d]){2,62}\.)+\w{2,4}$/ui',$domain)){
echo "OK";
}else{
echo "ERR";
}
?>
srv0#
ы?
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-11-01 11:10:13
hizel
php гумно
Код: Выделить всё
hizel@wnight:~$ php 1.php
OKOK2
hizel@wnight:~$ cat 1.php
<?php
$regexp = '/^([\w\d\pL]([\w\d\-\pL]*[\w\d\pL]){2,62}\.)+\w{2,4}$/ui';
$domain = 'майгимгим.рф';
$domain2 = 'привет.лисик.рф';
if(preg_match($regexp,$domain)){
echo "OK";
}else{
echo "ERR";
}
if(preg_match($regexp,$domain2)){
echo "OK2";
}else{
echo "ERR2";
}
?>
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-11-01 11:32:16
Alex Keda
Код: Выделить всё
srv0# cat > /tmp/c.php
<?php
$regexp = '/^([\w\d\pL]([\w\d\-\pL]*[\w\d\pL]){2,62}\.)+\w{2,4}$/ui';
$domain = 'майгимгим.рф';
$domain2 = 'привет.лисик.рф';
if(preg_match($regexp,$domain)){
echo "OK";
}else{
echo "ERR";
}
if(preg_match($regexp,$domain2)){
echo "OK2";
}else{
echo "ERR2";
}
?>
^C
srv0# php /tmp/c.php
ERRERR2
srv0#
однако....
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-11-01 11:45:07
hizel
ээ
Код: Выделить всё
$ php -v
PHP 5.3.8-pl0-gentoo (cli) (built: Nov 1 2011 12:04:59)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
Код: Выделить всё
$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-11-01 14:52:41
Alex Keda
у меня 5.2
локаль utf8
Re: [PHP] регулярку подправить не получается
Добавлено: 2011-11-01 16:05:12
hizel
Код: Выделить всё
/^([\d\pL]([\d\-\pL]*[\d\pL]){2,62}\.)+\pL{2,4}$/ui