Помогите с регулярным выражением плиз...

Dimonets

Guest
Помогите с регулярным выражением плиз...

Здравствуйте!

У меня есть такое выражение:
if (ereg("[^a-zA-Z0-9_-]",$phrase)) $return_result = true;

Оно работает идеально! НО вот только мне нужно в список доступных символов добавить еще и пробел. Пробовал тупо дописать туда пробел, пробовал пробел со слешом, но не работает и возникает Warning о неопределенных символах в регулярном выражении (дословно щас не вспомню).

Перепробовал все, спрашивал многих, но так и не удалось решить проблему.

Помогите плиз.

Принимается, как исправленный этот код, так и другой альтернативный код, выполняющий эту же функцию (например с preg_match)

Спасибо.
 

Кром

Новичок
Т.е. ты хочешь сказать, что если ты напишешь так:
PHP:
if (ereg("[^a-zA-Z0-9 _-]",$phrase)) $return_result = true;
то у тебя возникают ошибки? :)
 

Dimonets

Guest
Спасибки!

Спасибо большое!

Ошибки возникали когда я ставил пробел в конце символов, те:
if (ereg("[^a-zA-Z0-9_- ]",$phrase)) $return_result = true;

А так как ты мне подсказал работает!

Кстати интересно почему, не мог бы в двух словах объяснить?

Спасибо.
 

Yukko

Новичок
внутри символьных классов заключенных в квадратный скобки символ "-" воспринимается как литерал только в начале или в конце. Между символами "-" воспринимается как метасимвол, который обозначает интервал литералов. Т.е. выражение [_- ] воспринимается как все символы от подчеркивания до пробела, что и вызывает ошибку. Если хочется включить символ "-" в символьный класс его нужно включить либо в начале, либо в конце, о чем тебе и поведал Кром.
 
Сверху