|
|
|
| Добрый вечер! Вчера стал осваивать функцию preg_match, вообщем делаю простенькую проверку на русские буквы для формы:
<?
/* если будет введены левые символы, кроме русских букв и пробела, то выводим ошибку */
if(!preg_match("/^[а-яА-Я ]+$/i", $author) {exit("разрешено вводить только русские буквы!";)}
?>
|
все работает как надо, только почему-то маленькие русские буквы такие как "тцушщхъфырэчсью" функция воспринимает как левые буквы и возвращает ошибку, конечно я дописал их в саму функцию и все теперь в норме, но можно ли сделать короче? Пришлось перебирать весь алфавит... как-то неизящно :)
<?
/* если будет введены левые символы, кроме русских букв и пробела, то выводим ошибку */
if(!preg_match("/^[а-яА-Я тцушщхъфырэчсью]+$/i", $author) {exit("разрешено вводить только русские буквы!";)}
?>
|
| |
|
|
|
|
|
|
|
для: ladan
(15.12.2011 в 20:15)
| | я бы использовал функцю in_array(); | |
|
|
|
|
|
|
|
для: Jovidon
(15.12.2011 в 20:47)
| | думаю тему стоит перенести в регулярки | |
|
|
|
|
|
|
|
для: ladan
(15.12.2011 в 20:15)
| | Добавьте модификатор "u", должно помочь....
файл должен быть в кодировке "utf-8"
<?php
if(!preg_match("/^[а-яА-Я]+$/iu", $author) {exit("разрешено вводить только русские буквы!";)}
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(16.12.2011 в 02:30)
| | Спасибо, реально помогло :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.12.2011 в 02:30)
| | я лично бы от себя добавил правку в регулярку
"/^[а-яА-Я]+$/iu" => '/^[а-яё \t]+$/iu'
|
1. двойные кавычки я не использую в php, без сильно на то причины, а в регулярках вообще табу.
2. использовать большие и маленькие буквы в одном символьном классе и с модификатором i это не хорошо. Это почти тоже самое что регуляка найдет дапазон маленьких букв потом диапазон больших букв а потом к каждому символу диапазона будет искать противоположную по регистру букву. Так как часто модификатор i оптимизируются в самой регулярке то он приоритетней.
3. в юникоде и в однобайтовых кодировках которые я встречал, символ ё не входит в диапазон от а-я поэтому про него нельзя забывать.
4. хоть в требованиях упоминается только пробел я еще добавил табуляцию, на всякий случай.
З.Ы.все выше описное это ИМХО | |
|
|
|
|
|
|
|
для: duhon
(18.12.2011 в 05:49)
| | >1. двойные кавычки я не использую в php, без сильно на то причины, а в регулярках вообще табу.
почему? | |
|
|
|
|
|
|
|
для: Slo_Nik
(18.12.2011 в 19:24)
| | Потому, что в PHP с ними очень много фокусов, когда у вас в регулярном выражении $ { и } или вам нужно что-то экранировать... в нормальных языках вообще кавычки не используются с регулярными выражениях, так как в них и без особенностей кавычек есть что в голове держать... | |
|
|
|