[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Глюки ereg
LRCenter
Составил выражение, которое "сечет", наличие в строке любых символов кроме указаных.

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.
Тем более, первые уже намечены на удаление.
Хабра


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.