|
|
|
| Первый раз сделал регулярное выражание и оно работает неправильно.
Вот оно:
<?php preg_match("/^(?:[a-zA-Z0-9_()\s]+)|(?:[а-яА-Я0-9_()\s]+)$/",$text); ?>
|
Оно проверяет, подходит ли $text по шаблону либо только латинские, либо только русские буквы. Ну и ещё цифры, скобки, подчёркивания и пробелы.
Если вводить только латинские буквы, все работает хорошо. Но если в переменной присутствует русский (не в начале строки), то регулярка его не видит и даёт TRUE, хотя должен наоборот, FALSE, так как присутствует и латинские, и русские буквы.
Если строка начинается с русской буквы, то независимо от остальных символов, возвращается FALSE.
Подскажите, как правильно написать такое регулярное выражение? | |
|
|
|
|
|
|
|
для: Freddie_X
(31.01.2008 в 21:26)
| | Так, толком не понятно, что нужно в итоге? | |
|
|
|
|
|
|
|
для: Faraon
(31.01.2008 в 22:16)
| | Ну вот например:
<?php if(preg_match("/^(?:[a-zA-Z0-9_()\s]+)|(?:[а-яА-Я0-9_()\s]+)$/",$text)) echo "Походит!";
else echo "Не подходит!"; ?>
|
Если $text = "abc" или "абв" и т.д., то выводить "Подходит!"
Если $text = "абвabc" или "abcабв" - выводить "Не подходит!"
Т.е. допускаются симолы пробела, скобок, подчёркивания, цифр и букв. Но есть условие, что буквы должны быть либо только русскими, либо только латинскими, а в перемешку нельзя. | |
|
|
|
|
|
|
|
для: Freddie_X
(31.01.2008 в 23:01)
| |
preg_match("/^(([a-z0-9_()]+)|([а-я0-9_()]+))$/is",$text)
|
| |
|
|
|
|
|
|
|
для: Faraon
(31.01.2008 в 23:10)
| | У меня вопрос, а почему вы убрали символы пробелов "\s" и "?:" в начале скобок? Ведь мне не надо их запоминать!
И почему не работает русский язык в регулярных выражениях?
Пишу такое перед скриптом - 0 эмоций...
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
| |
|
|
|
|
|
|
|
для: Freddie_X
(01.02.2008 в 00:47)
| |
preg_match("/^(([a-z0-9_\(\)\s]+)|([а-яё0-9_\(\)\s]+))$/is",$text)
|
Насчет прбелов не заметил, что они вам нужны. Добавьте их
>?:
Зачем эта конструкция здесь нужна? | |
|
|
|
|
|
|
|
для: Faraon
(01.02.2008 в 09:42)
| | Ну я вычитал, что если делать группирующие скобки, то если не хочу их запоминать (чтобы потом использовать через \1, \2, \3 и .т.д.), надо ставить эти 2 символа.
====
Проверил, что русский язык не работает, если переменную брать из GET, а если прописывать её прямо в коде, всё работает. Как можно исправить? | |
|
|
|
|
|
|
|
для: Freddie_X
(01.02.2008 в 11:30)
| | По Вашему постановлению вопроса, Вам всего лишь надо проверить соответсвует ли строка(входящая переменная) условию либо только английские буковки, циферки и символы перечисленные Вами, либо то же самое только с русскими буковками.
>Проверил, что русский язык не работает, если переменную брать из GET
С передающего скрипта используйте функцию urlencode(),
с принимающего urldecode() | |
|
|
|
|
|
|
|
для: Faraon
(01.02.2008 в 21:25)
| | Спасибо! Всё работает! | |
|
|
|
|
|
|
|
для: Freddie_X
(03.02.2008 в 17:21)
| | Появился вопрос! А если я данные отправляю через форму? Как тогда записать urlencode в форме? | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 18:15)
| | Под новые вопросы лучше заводить новые темы. | |
|
|
|