Регулярные выражения PHP
Читаю Котерова "Регулярные выражения".
Там пишут что \w - любая буква или цифра. Написал такой код: <form action="index.php" method="post"> <input type="text" name="username"/> <input type="submit" value="Отправить" /> </form> <?php ///[a-zA-Z]+-[a-zA-Z]/ // preg_match("шаблон_поиска", "строка_в_которой_проводится_поиск", массив_с_результами_поиска) if(isset($_POST['username'])) $user = $_POST['username']; else { $user = ''; exit;} echo $user.'<br>'; if(preg_match("/\\w/", $user)) { echo "Имя пользователя задано в правильном формате"; } else { echo "Имя пользователя задано в <b><font color='red'>неправильном формате</font></b>"; } ?> Почему не работает кирилица в \w? 2. Там пишут что есть выражения, которые определяют группу символов. пишу так: if(preg_match("/[[:alpha:]]/", $user)) { определяет только латиницу почему то 3. Пишут что знак "*" соответствует 0 или больше символов, пишу так /a-*-/ а затем ввожу одну букву, выдает ошибка, оказывается нужно 1 и более, а не ноль и более. 4.http://s2.ipicture.ru/uploads/20120609/6Sdxdkh1.jpg Пробую так: if(preg_match("/a{1}/", $user)) { хоть напишу один раз или 10 раз букву "а" выдает что верно, хотя здесь ограничитель в один раз Пишу так: if(preg_match("/a{1,2}/", $user)) { Букву "а" согласно данному выражению я могу вводить от 1-2 раз, ввожу 10 раз букву "а" и выдает что верно 5. Пишут что если знак "?"(квантификатор), перед ним символ может повторятся только 0 или 1 раз(но не более!). Пишу такой код: if(preg_match("/a?/", $user)) { Ввожу 10 раз букву а латинскую и выдает что верно. Если кто может, объясните вот эти действия почему так и также почему не работет кирилица. Заранее благодарю. |
все должно работать с кириллицой.. просто используйте кодировку UTF-8 а не CP-1251 и все будет чудесно работать
|
Изменил кодировку в Ютф-8 и сам файл перекодировал в Ютф-8 и ничем не помогло.
|
Цитата:
Цитата:
Цитата:
Могу лишь посоветовать вам дочитать книгу до конца, а потом пытаться разобраться. Потому как вы не все поняли из книги, или просто не дочитали ее до конца, либо книга плохая. |
1. \\w зачем тут два слеша?
2. При утф8 надо использовать модификатор u (или большая U - всё время путаюсь, но вроде как маленькая) |
Цитата:
|
Ну и в догонку:
Цитата:
Любое количество любых символов, затем один символ "а", затем ноль или больше символов "-", затем один символ "-", затем любое количество любых символов. Те, просто "а", не подходит, тк после него обязательно должен быть "-". |
В крайнем случае можно указать интервал [а-я], должно работать.
|
Часовой пояс GMT +3, время: 12:23. |