Страница 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