Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2012, 19:31
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Регулярные выражения 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 раз букву а латинскую и выдает что верно.

Если кто может, объясните вот эти действия почему так и также почему не работет кирилица. Заранее благодарю.
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2012, 19:35
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

все должно работать с кириллицой.. просто используйте кодировку UTF-8 а не CP-1251 и все будет чудесно работать
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2012, 19:52
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Изменил кодировку в Ютф-8 и сам файл перекодировал в Ютф-8 и ничем не помогло.
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2012, 20:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от kilogram
if(preg_match("/a{1}/", $user)) {
если хоть одну букву a найдет, то все гуд, не важно сколько вы их вбили
Сообщение от kilogram
if(preg_match("/a{1,2}/", $user)) {
тоже что и верхнее правило, одна или две
Сообщение от kilogram
if(preg_match("/a?/", $user)) {
найдет a или не найдет, все прокатет.. а вбить можете хоть миллион, если он хоть одно вхождение найдет или вообще не найдет то все гуд.

Могу лишь посоветовать вам дочитать книгу до конца, а потом пытаться разобраться. Потому как вы не все поняли из книги, или просто не дочитали ее до конца, либо книга плохая.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2012, 21:08
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

1. \\w зачем тут два слеша?
2. При утф8 надо использовать модификатор u (или большая U - всё время путаюсь, но вроде как маленькая)
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2012, 21:21
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Serg_pnz
2. При утф8 надо использовать модификатор u (или большая U - всё время путаюсь, но вроде как маленькая)
при UTF-8 не обязательно юзать этот модификатор. И без него PHP понимает с какой кодировкой нужно работать. В ранних версиях PHP да нужно было юзать модификатор, сейчас уже не нужно/не обязательно.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2012, 22:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Ну и в догонку:
Цитата:
3. Пишут что знак "*" соответствует 0 или больше символов, пишу так
/a-*-/
Расшифровка:
Любое количество любых символов,
затем один символ "а",
затем ноль или больше символов "-",
затем один символ "-",
затем любое количество любых символов.

Те, просто "а", не подходит, тк после него обязательно должен быть "-".
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 13.06.2012, 19:19
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

В крайнем случае можно указать интервал [а-я], должно работать.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
Регулярные выражения vivalaakam Общие вопросы Javascript 6 08.02.2012 09:41
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35
регулярные выражения php HelpeR Серверные языки и технологии 5 15.09.2009 21:09