Помогите, пожалуйста, регуляркой!
Спустя 6 минут, 13 секунд (7.06.2010 - 21:14) noo написал(а):
ах да, забыл - еще дефисы и тире тоже пропускать надо)
Спустя 10 часов, 39 минут, 8 секунд (8.06.2010 - 07:53) Basili4 написал(а):
http://www.softtime.ru/bookphp/gl7_1.php читай там все написано.
Спустя 3 часа, 4 минуты, 40 секунд (8.06.2010 - 10:58) noo написал(а):
Цитата (Basili4 @ 8.06.2010 - 04:53) |
http://www.softtime.ru/bookphp/gl7_1.php читай там все написано. |
спасибо, пытаюсь вдуплить, однако появляются непонятки.
Читаю:
Цитата |
В регулярном выражении может быть несколько ветвей, которые разделяются символом |, действующим как оператор OR (ИЛИ) |
когда ставлю | php мне ругается на мою регуляркку, именно на этот | как непонятный символ.
Типа того должно быть?
[а-Я|a-Z|0-9|,|.|-] - если честно, то я таких регулярок в жизни не видел
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 4 часа, 31 минута, 14 секунд (8.06.2010 - 15:29) stichser написал(а):
Попробуй || поставить!Я конечно сам только новичек,но вроде надо двойные штуки ставить!
Спустя 6 минут, 17 секунд (8.06.2010 - 15:35) Basili4 написал(а):
preg_match не ругается
Спустя 6 минут, 3 секунды (8.06.2010 - 15:41) ApuktaChehov написал(а):
preg_match("/[^-а-z0-9,. ]+/i", $x);
Если в строку будет что то лишнее, оно вернет труе.
Спустя 2 дня, 1 час, 7 минут, 47 секунд (10.06.2010 - 16:49) noo написал(а):
Цитата (ApuktaChehov @ 8.06.2010 - 12:41) |
preg_match("/[^-а-z0-9,. ]+/i", $x); Если в строку будет что то лишнее, оно вернет труе. |
Пропускает все. Сделал условие, что если тру, то выдавать ошибку. Пишу всякую каку, вроде <? ?> - все равно пропускает.
Спустя 2 минуты, 44 секунды (10.06.2010 - 16:52) ApuktaChehov написал(а):
Это выражение пытается искать хотя бы один символ, который не входит в перечень разрешенных. Если таковой находится, оно возвращает true. Показывайте код проверки.
P.S. Попробуйте проэкранировать точку в символьном класе, я не уверен что она считается строковым литералом.
P.S. Попробуйте проэкранировать точку в символьном класе, я не уверен что она считается строковым литералом.
Спустя 8 минут, 3 секунды (10.06.2010 - 17:00) noo написал(а):
все равно пропускает. Вот одна из проверок:
elseif (preg_match("/[^-а-z0-9,]+/i", $_POST['name'])==true) {echo "<br>Неверный формат сообщения";}
Спустя 17 минут, 8 секунд (10.06.2010 - 17:17) ApuktaChehov написал(а):
Вот это работает.
$str = 'asldkjg, .<?';
if(preg_match('/[^-a-z0-9,. ]+/i', $str))
echo('Что за символ?');
Спустя 35 минут, 16 секунд (10.06.2010 - 17:52) noo написал(а):
через доп переменную сработало:
Но мне ж еще русские символы нужны + большие/маленькие буквы.
добавил:
Опять все пропускает. В чем ошибка?
if(preg_match('/[^-a-z0-9,. ]+/i', $name))
echo('Что за символ?');
Но мне ж еще русские символы нужны + большие/маленькие буквы.
добавил:
if(preg_match('/[^-а-Яa-Z0-9,. ]+/i', $name))
Опять все пропускает. В чем ошибка?
Спустя 30 минут, 39 секунд (10.06.2010 - 18:23) Bezdna написал(а):
if(!preg_match("/^[0-9A-ZА-Я\,\:\s]+$/i", $name))
echo('Что за символ?');
+ добавка, чтобы не мучать ж... http://www.regexpr.ru/
Спустя 1 час, 12 минут, 41 секунда (10.06.2010 - 19:35) ApuktaChehov написал(а):
А зачем экранировать запятую и двоеточие? И зачем допускать любые пропуски между символами? По моему достаточно просто пробелов.
Bezdna мы с тобой описали противоположные выражения, которые выполняют одинаковые функции.
noo [^-а-Яa-Z0-9,. ] так делать нельзя. Символ i в конце, как раз и говорить, что регистр букв учитываться не должен.
Bezdna мы с тобой описали противоположные выражения, которые выполняют одинаковые функции.
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
noo [^-а-Яa-Z0-9,. ] так делать нельзя. Символ i в конце, как раз и говорить, что регистр букв учитываться не должен.
Спустя 6 минут, 5 секунд (10.06.2010 - 19:41) noo написал(а):
Цитата (Bezdna @ 10.06.2010 - 15:23) |
if(!preg_match("/^[0-9A-ZА-Я\,\:\s]+$/i", $name)) + добавка, чтобы не мучать ж... http://www.regexpr.ru/ |
Спустя 3 минуты, 43 секунды (10.06.2010 - 19:45) ApuktaChehov написал(а):
noo. Тот сайт проверяет корректность выражение, а не фактор его использования в PHP.
И мое выражение и выражение Bezdna работают. Берите и используйте.
А если у вас недостаточно знаний, учитесь, потому как никто не будет это делать за вас.
И мое выражение и выражение Bezdna работают. Берите и используйте.
А если у вас недостаточно знаний, учитесь, потому как никто не будет это делать за вас.
Спустя 9 минут, 10 секунд (10.06.2010 - 19:54) noo написал(а):
Цитата (ApuktaChehov @ 10.06.2010 - 16:45) |
noo. Тот сайт проверяет корректность выражение, а не фактор его использования в PHP. И мое выражение и выражение Bezdna работают. Берите и используйте. А если у вас недостаточно знаний, учитесь, потому как никто не будет это делать за вас. |
Я очень благодарен вам за то, что вы вообще откликнулись мне помочь.
По рабочему варианту постараюсь разобраться что какой символ означает.
Если же вы мне не верите, то попробуйте запустить:
<? if(!preg_match("/^[0-9A-ZА-Я\,\:\s]+$/i", "Вот такое выражение "))
echo('Что за символ?');
else
echo 'все норм';
?>
Спустя 2 минуты, 56 секунд (10.06.2010 - 19:57) ApuktaChehov написал(а):
Все работает. Выдает что все норм.
Спустя 2 минуты, 19 секунд (10.06.2010 - 20:00) noo написал(а):
Цитата (ApuktaChehov @ 10.06.2010 - 16:57) |
Все работает. Выдает что все норм. |
Спустя 5 минут, 27 секунд (10.06.2010 - 20:05) ApuktaChehov написал(а):
Смотрите в сторону кодировки файла.
Спустя 3 минуты, 1 секунда (10.06.2010 - 20:08) noo написал(а):
utf-8 без bom.
На денвере аналогично проверяю - тоже не пропускает все.
Блин, ну что за папасть
что делать?)
На денвере аналогично проверяю - тоже не пропускает все.
Блин, ну что за папасть
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 1 минута, 16 секунд (10.06.2010 - 20:09) ApuktaChehov написал(а):
В кодировке ANSI, т.е. Win1251, все работает.
На самом деле я и сам не знаю почему так
На самом деле я и сам не знаю почему так
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 2 минуты, 49 секунд (10.06.2010 - 20:12) ApuktaChehov написал(а):
Копаем дальше, проблема именно с кириллицей.
Щас может "батьки" подтянутся научат нас![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Причем не со всеми символами. Сейчас я нашел, что оно криво работает с буковой Ы и Т и Р
Щас может "батьки" подтянутся научат нас
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Причем не со всеми символами. Сейчас я нашел, что оно криво работает с буковой Ы и Т и Р
Спустя 3 минуты, 51 секунда (10.06.2010 - 20:16) noo написал(а):
Да не, с utf надо полюбас, о придумал, может кодировать в base64? но это как-то не из легких путей))
upd: да проверил, с анси и cp1521 работает
upd: да проверил, с анси и cp1521 работает
Спустя 20 минут, 1 секунда (10.06.2010 - 20:36) ApuktaChehov написал(а):
Нарыл. Нужно поставить модификатор u. Но это только для UTF8.
Вот так все работает:
P.S. Это выражение пропускает, если ввести одни пробелы.
Вот так все работает:
preg_match("/^[0-9A-ZА-Я\,\:\s]+$/iu", "Вот такое выражение "))
P.S. Это выражение пропускает, если ввести одни пробелы.
Спустя 3 минуты, 51 секунда (10.06.2010 - 20:40) noo написал(а):
Цитата (ApuktaChehov @ 10.06.2010 - 17:36) |
Нарыл. Нужно поставить модификатор u. Но это только для UTF8. Вот так все работает: preg_match("/^[0-9A-ZА-Я\,\:\s]+$/iu", "Вот такое выражение ")) P.S. Это выражение пропускает, если ввести одни пробелы. |
опередил, я тоже нарыл.
Вот полезная ссылочка по этой теме:
http://webew.ru/posts/1836.webew
ребята, спасибо большое за помощь!
Спустя 3 минуты, 49 секунд (10.06.2010 - 20:44) ApuktaChehov написал(а):
Да еще и про букву ё забывать не надо.
preg_match("/^[0-9A-ZА-ЯёЁ\,\:\s]+$/iu", "Вот такое выражение "))
Спустя 35 минут, 3 секунды (10.06.2010 - 21:19) noo написал(а):
ApuktaChehov, ага, спасибо. Полезная тема получилась ![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 10 минут, 55 секунд (10.06.2010 - 21:30) Gabriel написал(а):
Цитата |
ничо се а у меня на хосте то же самое, но: http://fl-lessons.ru/re.php |
а кодировку для браузера поставил?