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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 07:40   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию preg_match в PHP 5.3 "клюёт" только на первые символы?

Здравствуйте уважаемые форумчане. Я уже писал сюда с проблеммой на простейшем регулярном выражении. Оказалось, что в PHP 5.3 функции ereg() уже нет, а есть preg_match().
Вот регулярное выражение, которое находит ошибку только если первый символ будет из списка запрещенных.
PHP код:
if(preg_match("/[A-Za-z0-9_]/",$login))
{
  echo 
"Логин введен верно";
}
else
{
  echo
"Неверно введен логин";

Объясню понагляднее. Допустим в форму
Код HTML:
<form method="POST"><input type="text" name="login"></form>
введем VЛАД, то за ошибку это не посчитается. А если ВLAD, то ошибка будет. Пожалуйста объясните, как можно сделать так, чтоб регулярное выражение было очень строго к строке.
Заранее спасибо.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 12.05.2010, 08:42   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

/[a-z0-9_]/ig
SkyM@n вне форума Ответить с цитированием
Старый 12.05.2010, 13:59   #3
Vertexxx
Заблокирован
 
Регистрация: 10.04.2010
Сообщений: 145
По умолчанию

Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
Вот регулярное выражение, которое находит ошибку только если первый символ будет из списка запрещенных.
Или так:
PHP код:
// + - квантор, обеспечивающий одно и более совпадений (хотя бы одно)
// ^ - якорь начала строки
// $ - якорь конца строки
// i - модификатор регистронезависимости
/* 
    таким образом, обеспечиваются только латинские буквы любого регистра,
    цифры и сивол подчеркивания во всей строке. Ничего иного в неё нельзя будет ввести.
*/
if(preg_match("/^[a-z0-9_]+$/i"$login)) 
{
  echo 
"Логин введен верно";
}
else
{
  echo 
"Неверно введен логин";

вот ссылочка, где очень общо рассказывается о регулярных выражениях.
Если хотите копнуть глубже - очень рекомендую книгу Джеффри Фридла "Регулярные выражения" издательства O'Reilly, до недавней поры являющейся единственной книгой по данной тематике. Опознавательные знаки - бело-голубая книга с двумя совами на обложке.

Последний раз редактировалось Vertexxx; 12.05.2010 в 14:32. Причина: поправочка и дополнение
Vertexxx вне форума Ответить с цитированием
Старый 12.05.2010, 19:05   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Большое спасибо

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что происходит на странице с такие JS: <script src="cmp.php?complete&amp;" id="las..." ...>? TwiX JavaScript, Ajax 0 05.02.2010 17:38
PHP(или другой язык): Получить все пары "имя" -> "значение" переданные методом POST KingOfNothing PHP 4 12.04.2009 14:06
login@domain.com;pass она должна брать сначала только "login" потом "domain.com" и на последок "pass" AquaKlaster Общие вопросы Delphi 4 05.04.2009 17:31
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03