Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2012, 19:36   #1
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию Регулярные выражения

Читаю Котерова "Регулярные выражения".
Там пишут что \w - любая буква или цифра.
Написал такой код:
PHP код:
<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. Там пишут что есть выражения, которые определяют группу символов.
пишу так:
PHP код:
if(preg_match("/[[:alpha:]]/"$user)) { 
определяет только латиницу почему то

3. Пишут что знак "*" соответствует 0 или больше символов, пишу так
PHP код:
/a-*-/ 
а затем ввожу одну букву, выдает ошибка, оказывается нужно 1 и более, а не ноль и более.

4.
Пробую так:
PHP код:
if(preg_match("/a{1}/"$user)) { 
хоть напишу один раз или 10 раз букву "а" выдает что верно, хотя здесь ограничитель в один раз
Пишу так:

PHP код:
if(preg_match("/a{1,2}/"$user)) { 
Букву "а" согласно данному выражению я могу вводить от 1-2 раз, ввожу 10 раз букву "а" и выдает что верно

5. Пишут что если знак "?"(квантификатор), перед ним символ может повторятся только 0 или 1 раз(но не более!).
Пишу такой код:
PHP код:
if(preg_match("/a?/"$user)) { 
Ввожу 10 раз букву а латинскую и выдает что верно.

Если кто может, объясните вот эти действия почему так и также почему не работет кирилица. Заранее благодарю.
kilogram вне форума Ответить с цитированием
Старый 09.06.2012, 20:19   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Кириллица зависит от кодировки, если utf-8 (что советую), то есть специальный флаг 'u'
Код:
preg_match("/[а-я]/ui", $user))
-----------
Код:
/a{1,2}/
Ищет во ВСЕЙ строке совпадения, а не берет всю строку и сравнивает с шаблоном
Код:
/^a{1,2}$/
Вот теперь 10 раз букву 'a' не введете

Последний раз редактировалось Cronos20; 09.06.2012 в 20:24.
Cronos20 вне форума Ответить с цитированием
Старый 09.06.2012, 20:26   #3
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Код:
preg_match("/[а-я]/ui", $user))
u - это кодировка, а "i" ?
kilogram вне форума Ответить с цитированием
Старый 09.06.2012, 20:35   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от kilogram Посмотреть сообщение
u - это кодировка, а "i" ?
А почитать у Котерова..?
Andkorol вне форума Ответить с цитированием
Старый 10.06.2012, 00:44   #5
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

i Включает режим case-insensitive, т.е. большие и маленькие буквы в выражении не различаются.
Pamparam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения DoGFoX Общие вопросы Delphi 1 03.02.2011 10:49
регулярные выражения Dimarik PHP 10 09.12.2010 21:19
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
регулярные выражения wyvern PHP 3 09.04.2009 22:15