if(!ereg("[^A-z0-9,.:_-]",$str)){echo"Строка чиста";}
else{echo"Обнаружены посторонние символы";}
Все работает отлично, пока не попытался приделать в исключения кириллицу:
[^A-я0-9,.:_-]
Что так
[^A-zА-я0-9,.:_-]
Что эдак выражение начинает вести себя неадекватно, не распознает "левые" символы вроде [ ] /. Нижний вариант, еще кроме того не распознает некоторые буквы кириллицы.
Думал может дело в мультибайте, скрипт в utf-8, попробовал mb_ereg - тоже самое. :(
Даже не знаю че-за фигня такая.
Спустя 5 минут, 53 секунды (22.06.2011 - 09:30) Mirexzpalich написал(а):
if(!preg_match("/^A-Za-zА-Яа-яЁё0-9,.:_-/u",$str)){echo"Строка чиста";}
else{echo"Обнаружены посторонние символы";}
ereg устаревшая функция....
Спустя 1 час, 25 минут, 58 секунд (22.06.2011 - 10:56) LRCenter написал(а):
Mirexzpalich
Странно, но даже при такой строке:
предложеное решение выдает - "Строка чиста".
Проверил на нескольких серверах в разных операционках и т.п. Везде так. Почему?
Странно, но даже при такой строке:
$str="/\ []";
предложеное решение выдает - "Строка чиста".
Проверил на нескольких серверах в разных операционках и т.п. Везде так. Почему?
Спустя 16 минут, 36 секунд (22.06.2011 - 11:13) LRCenter написал(а):
ага, скобочки забыли, а так все супер, спасибо большое)
if(!preg_match("/[^A-Za-zА-Яа-яЁё0-9,.:_-]/u",$str)){echo"Строка чиста";}
else{echo"Обнаружены посторонние символы";}
Спустя 17 минут, 32 секунды (22.06.2011 - 11:30) Winston написал(а):
Пора уже переходить из медленных POSIX expressions на более быстрые PCRE expressions.
Тем более, первые уже намечены на удаление.
Хабра
Тем более, первые уже намечены на удаление.
Хабра
_____________
Меньше кода - меньше багов ©