ereg + регулярка + символы []

Статус
В этой теме нельзя размещать новые ответы.

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Имеется вот такое условие:
PHP:
if( (! ereg( '^[-!$%\'*+\\./0-9=?A-Z^_`a-z{|}~]+', $text ))) die
Смысл: если найдены в $text символы не из регулярки - скрипт останавливается.
Нужно: не останавливать скрипт, если в нём есть символы [].

Как добавить в регулярку ещё и []? Если ставлю по общей инструкции в начало выражения, происходит ошибка:
PHP:
^[][-!$%\'*+\\./0-9=?A-Z^_`a-z{|}~]+
Помогите, плиз.:thenks:
 
экранировать надо
или через preg_quote или просто ставить слэш \

\[\]\{\}\$\?
 
Я с регулярками даже на "Вы" не общался никогда...
Можно написать готовое решение проблемы, как заменить или экранировать?
PHP:
if( (! ereg( '^[\]-!$%\'*+\\./0-9=?A-Z^_`a-z{|}~]+', $text ))) die
Вызывает ошибку...
 
PHP:
if( (!preg_match( '%\^\[\]-!\$\%\'*\+\\./[0-9]=\?[A-Z]_`[a-z]\{\|\}%', $text ))) die;
какая-то странная проверка..мб расскажете что необходимо проверить, а там возможно предложим более лучший вариант чем регулярка
 
Без проблем.
Это проверка проверяет регистрируемый ник для игры CS 1.6
Цель: дать регить только определённые символы. Необходимо исключить #&<> и русские буквы, в принципе, но на влякий случай, вырезаем всё не из списка, дабы не вводились символы UTF-8, такие как китайский алфовит и т.д.

Если предложите другой вариант - буду рад.
 
PHP:
if( (!preg_match( '%^[a-z0-9]+$%iD', $text ))) die;

итого, регулярка пропускает только те ники, которые состоят из букв английского алфавита и цифры, больше никого
 
Не всё так просто. Порезать до A-Za-z0-9 я и сам смог8, но свойства CS в том, что юзеры любят использовать кучу спец символов...


Это для примера - вытащил последних 3х из бана.

Соответственно надо позволять регить кучу символов, но юникс не любит символы <>#& - их надо вырезать 100% + ещё несколько лишних...

Кстати, чем preg_match лучше ereg?
 
PHP:
if(preg_match('~[^'.preg_quote('список разрешённых символов', '~').']~', $text)) die();

Можно убрать "^" и писать список запрещённых символов.

preg_match лучше ereg хотя бы тем, что он есть в поставке PHP6, а ereg'и исключены. Ещё много разных отличий.
 
if( (preg_match('~[^'.preg_quote('1', '~').']~', $nick)) *******

Parse error: syntax error, unexpected T_VARIABLE in /var/www/virtual/***/htdocs/engine/modules/register.php on line 43
Где я лоханулся?
 
Копировать не пробовал?

У тебя что то со скобками, открывающих 3, закрывающих 2.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху