Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> preg_match как то наоборот 
:(
    Опции темы
Reptor
Дата 1.4.2011, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Нужно разрешить только цыфры, буквы и апостроф и пробел..  

делаю так 

Код


$pattern = '/[^a-zA-Z0-9\s\']/';        
 
$str = array('John O\'Reilly', 'John-Smith', 'John Smith', 'Jaques Rémi', 'Jill_Henning');
foreach($str as $val){
       echo $val . ' => ';
    echo (preg_match($pattern, $val, $m))? "Correct format<br />\n" : "Incorrect format<br />\n";
}


и выводит вот что

John O'Reilly => Incorrect format
John-Smith => Correct format
John Smith => Incorrect format
Jaques R�mi => Correct format
Jill_Henning => Correct format


Как то всё наоборот???  



PM MAIL ICQ   Вверх
SneG0K
Дата 1.4.2011, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Код

$pattern = '/[a-zA-Z0-9\s\']/'; 

Эмм?
PM WWW Skype   Вверх
skyboy
Дата 1.4.2011, 07:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



SneG0K, если будет хоть одна букво-цифра, а все остальные символы будут - запрещенными, то твоя регулярка все равно эту строку пропустит.
Reptor, ну, так поменяй местами действия.
а то
Цитата(Reptor @  1.4.2011,  01:47 Найти цитируемый пост)
 
$pattern = '/[^a-zA-Z0-9\s\']/';
echo (preg_match($pattern, $val, $m))? "Correct format<br />\n" : "Incorrect format<br />\n";

означает "если есть хотя бы один символ не буква и не цифра, то вывести Correct. А если в слове только буквы, цифры и пробелы - вывести Incorrect".
ну, и регистронезависимость можно было только одним модификатором добавить
PM MAIL   Вверх
Muerto
Дата 1.4.2011, 11:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Reptor, А нафиг в регулярке ^ ?
^ внутри [] ведь говорит чего ты НЕ хочешь что бы было...

Правильно будет как то так
Код

$pattern = '/^[a-zA-Z0-9\s\']*$/';       


Это сообщение отредактировал(а) Muerto - 1.4.2011, 11:47


--------------------
user posted image
PM MAIL   Вверх
patap
Дата 1.4.2011, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



только вместо * лучше +, а то будет пропускать пустую строку 
Код

/^[a-z0-9\s\']+$/i


Добавлено @ 12:15
кстати под \s попадает не только пробел, так что возможно лучше будет задать пробел жестко

Это сообщение отредактировал(а) patap - 1.4.2011, 12:15


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Gold Dragon
Дата 1.4.2011, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(patap @  1.4.2011,  13:13 Найти цитируемый пост)
кстати под \s попадает не только пробел
а какие ещё?



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
patap
Дата 1.4.2011, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



пробел, табуляция и перевод строки


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Reptor
Дата 1.4.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



/^[a-z0-9\s\']+$/i

Да ето вроде то что надо smile Спасибо

По поводу табуляция и перевод строки - ето регекс для инпута... там вроде табуляция и перевод строки не нужно или нужно?
PM MAIL ICQ   Вверх
afiskon
Дата 1.4.2011, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: нет
Всего: 4



Ну теоретически пользователь все что угодно может вам по HTTP передать, пусть на сайте у вас даже обычное поле ввода, куда новую строку нельзя вписать. Так что проверяйте максимально строго. Еще советую на длину сделать проверку

/[a-zA-Z0-9что-там-еще]{1,32}/
PM MAIL WWW   Вверх
Reptor
Дата 2.4.2011, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



afiskon, Длина.. точно.. совсем забыл

Спасибо
PM MAIL ICQ   Вверх
skyboy
Дата 2.4.2011, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(afiskon @  1.4.2011,  21:05 Найти цитируемый пост)
Еще советую на длину сделать проверку

без ^ и $ в паттерне проверка получается, ну, совсем не строгая.
PM MAIL   Вверх
Muerto
Дата 2.4.2011, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Цитата(skyboy @ 2.4.2011,  07:39)
Цитата(afiskon @  1.4.2011,  21:05 Найти цитируемый пост)
Еще советую на длину сделать проверку

без ^ и $ в паттерне проверка получается, ну, совсем не строгая.

Нужно все совместить... опять же зависит от требований, что и от кого фильтруем


--------------------
user posted image
PM MAIL   Вверх
SneG0K
Дата 2.4.2011, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



skyboy, да, не обратил внимание на начало и конец строки.
PM WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.