range out of order in character class at offset

zerok

Новичок
range out of order in character class at offset

вот такая ошибка вылезает при проверке наличия русских букв

Warning: preg_match(): Compilation failed: range out of order in character class at offset 56


код след:

if (!preg_match("/^[QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm_-.]\.(\w+)$/", $_FILES['file']['name'])) {

if (preg_match("/^([-\w\s\d\.]+)\.(\w+)$/", $_FILES['file']['name'], $matches)) {
$matches[1] = eregi_replace("\.", "", $matches[1]);
$matches[1] = eregi_replace(" ", "_", $matches[1]);
$src_filename = transliterate($matches[1]).".".$matches[2];
} else {
die("Can't match file name:".$_FILES['file']['name']);
}

}
 

dr-sm

Новичок
по поводу ошибки:

[QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm_-.]
->
[-QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm_.]

тк '-' должна в вначале стоять, иначе она рассматривается как range

->
[-A-Za-z_.].

+ eregi_replace -> str_replace

тут еще много интересного:
http://phpclub.ru/detail/article/regexp_1
http://phpclub.ru/detail/article/regexp_2

PS а вобще-то регекспы здесь не нужны :)
 
Сверху