Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: разрешить пробел
 
 автор: NoCash   (13.04.2010 в 21:23)   письмо автору
 
 

понимаю что звучит глупо но подскажите как разрешить пробел в этой записи
return preg_match("/^[a-zA-Za-яА-Я0-9]{10,150}$/", $val);

  Ответить  
 
 автор: Саня   (13.04.2010 в 21:32)   письмо автору
 
   для: NoCash   (13.04.2010 в 21:23)
 

return preg_match("/^[a-zA-Za-яА-Я0-9 ]{10,150}$/", $val);

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 21:32)   письмо автору
 
   для: NoCash   (13.04.2010 в 21:23)
 

Я бы сделал так:
<?php
return preg_match("/^[\w ]{10,150}$/"$val);

пробельные символы еще можно получить подставив \s однако туда входят табуляция, перенос строки т.д.

Почитать об этом

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 21:32)   письмо автору
 
   для: NoCash   (13.04.2010 в 21:23)
 

.

  Ответить  
 
 автор: NoCash   (13.04.2010 в 22:02)   письмо автору
 
   для: neadekvat   (13.04.2010 в 21:32)
 

ничево не понимаю
вот в этой записи
function length_detail(&$val)
{
    return preg_match("/^[a-zA-Za-яА-Я0-9\s]{10,150}$/", $val);
}

все работает т.е пробел разрешается.
а вот в этой
    function length(&$val)
    {
        return preg_match("/^[a-zA-Za-яА-Я0-9\s] {3,20}$/", $val);
    }

не работает не разрешает причем не пропускает никакую запись с пробелом или без безранизницы все равно вылозит ошибочка

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 22:05)   письмо автору
 
   для: NoCash   (13.04.2010 в 22:02)
 

Выше я написал, какое должно быть рег.выражение.
Расскажите-ка, что вы под ^[a-zA-Za-яА-Я0-9\s] {3,20}$ понимаете. Вот так, словами, как это понять? И что должно пройти через этот регексп.

  Ответить  
 
 автор: NoCash   (13.04.2010 в 22:09)   письмо автору
 
   для: neadekvat   (13.04.2010 в 22:05)
 

дак нет)) вопрос стоит о том что записи совершенно одинковае различаются только количеством знаков но почему то в одном случае все получается а в другом нет

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 22:13)   письмо автору
 
   для: NoCash   (13.04.2010 в 22:09)
 

.

  Ответить  
 
 автор: NoCash   (13.04.2010 в 22:14)   письмо автору
 
   для: neadekvat   (13.04.2010 в 22:13)
 

кстати сейчас попробывал ваш код он тоже ничево не пропускает никакоз записей ни без пробелов ни с пробелами

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 22:15)   письмо автору
 
   для: NoCash   (13.04.2010 в 22:14)
 

Не успел отредактировать, отправляю сюда:

Что "нет"? Не помню вопроса на "да" или "нет".
Чтобы понимать свои рег.выражения и уметь их писать, нужно научиться "думать" как интерпритатор. Каждый ваш символ что-то значит (Trianon ниже описал один из вариантов исключения). В частности ваше выражение должно обязательно включать от четырех до 21 символа: букву латинского или русского алафавита в любом регистре, или цифры, или пробельный символ, и от 3-х до 20-ти пробелов.
Вот такое подойдет: "ф*три пробела*"; а такое уже нет: "ф", и даже такое нет: "ф*один пробел*".

> кстати сейчас попробывал ваш код он тоже ничево не пропускает никакоз записей ни без пробелов ни с пробелами
А условия в фигурных скобках учитывались?

  Ответить  
 
 автор: NoCash   (13.04.2010 в 22:21)   письмо автору
 
   для: neadekvat   (13.04.2010 в 22:15)
 

сначала учел потом не учел разницы нет все равно ругается

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 22:23)   письмо автору
 
   для: NoCash   (13.04.2010 в 22:21)
 

Покажите, как вы тестируете. У меня вот ничего не ругается

  Ответить  
 
 автор: NoCash   (13.04.2010 в 22:25)   письмо автору
 
   для: neadekvat   (13.04.2010 в 22:23)
 

 function length(&$val)
    {
        return preg_match("/^[w ]{3,20}$/", $val);
    }

  Ответить  
 
 автор: Trianon   (13.04.2010 в 22:29)   письмо автору
 
   для: NoCash   (13.04.2010 в 22:25)
 

и как Вы вызываете эту функцию?
Между прочим, зачем там амперсенд перед $val ?
var_dump(length("w w www wwww ww")); вроде как идет.

  Ответить  
 
 автор: neadekvat   (13.04.2010 в 22:29)   письмо автору
 
   для: NoCash   (13.04.2010 в 22:25)
 

Во-первых, хотя бы скопировать можно было бы правильно;
Во-вторых, приведите также и строку, которую вы в эту функцию передаете.

  Ответить  
 
 автор: NoCash   (13.04.2010 в 22:32)   письмо автору
 
   для: neadekvat   (13.04.2010 в 22:29)
 

опс все разобрался спс))
P.S код не капирую пишу в ручную так лучше понимается))

  Ответить  
 
 автор: Trianon   (13.04.2010 в 22:06)   письмо автору
 
   для: NoCash   (13.04.2010 в 22:02)
 

] {3,20}

Вы для пробела квантификатор поставили.
Если хотите чтобы живые пробелы не воспринимались значащими символами шаблона - применяйте модификатор шаблона x (весьма полезная, кстати, штука)

  Ответить  
 
 автор: NoCash   (23.04.2010 в 11:41)   письмо автору
 
   для: Trianon   (13.04.2010 в 22:06)
 

а возможно ли как нибудь разрещить кавычки " " ?

  Ответить  
 
 автор: Trianon   (23.04.2010 в 14:10)   письмо автору
 
   для: NoCash   (23.04.2010 в 11:41)
 

кавычку заэкранировать придется - двойным обратным слэшем.
Двойным потому, что первый уровень срежет оформление строки на языке php.

  Ответить  
 
 автор: Tonik992   (11.05.2010 в 23:44)   письмо автору
 
   для: Trianon   (23.04.2010 в 14:10)
 

\040 символ пробела

  Ответить  
 
 автор: Trianon   (12.05.2010 в 01:07)   письмо автору
 
   для: Tonik992   (11.05.2010 в 23:44)
 

кто здесь?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования