Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > PHP / MySQL

PHP / MySQL Создание динамических Веб-ресурсов

Ответ
 
Опции темы
Старый 18.01.2011, 10:30   #1
Zanthon
AnyKey`щик
 
Регистрация: 24.12.2010
Сообщений: 6
Написано одно полезное сообщение
Регулярные выражения

Господа, если есть спецы по регуляркам, помогите.

Нужен скрипт который должен проверять строку на соответствие 2-м шаблонам:

name||domain.com
и
domain.com||12345678||status

причем 12345678 - количество цифр может быть любым и status может принимать значения ip, o или c. Предполагается что пробелы из строки заблаговременно удалены. Функция должна проверять на соответствие, возвращать 0 если строка правильная или 1 если нет.

Помогите, плиз, воторой день уже мучаю мозг.
(Offline)
 
Ответить с цитированием
Старый 20.01.2011, 14:23   #2
HAMANN
Нуждающийся
 
Аватар для HAMANN
 
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений
(для 24 пользователей)
Ответ: Регулярные выражения

1. name||domain.com
$str 'name||domain.com';
preg_match('#^name\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+$#'$str); 
2. domain.com||12345678||status
$str 'domain.com||12345678||status';
preg_match('#^[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+\|\|[0-9]+\|\|(ip|o|c)$#'$str); 
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HAMANN за это полезное сообщение:
Reizel (20.01.2011), Zanthon (21.01.2011)
Старый 21.01.2011, 03:51   #3
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Регулярные выражения

HAMANN, а где про эти выражения почитать можно? (имеется ввиду, на твой взгляд где лучше)?
(Offline)
 
Ответить с цитированием
Старый 21.01.2011, 08:47   #4
HAMANN
Нуждающийся
 
Аватар для HAMANN
 
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений
(для 24 пользователей)
Ответ: Регулярные выражения

http://www.phpclub.ru/detail/article/regexp_1
не плохая статья. Не полная. Но довольно понятная
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (22.01.2011)
Старый 21.01.2011, 09:36   #5
Zanthon
AnyKey`щик
 
Регистрация: 24.12.2010
Сообщений: 6
Написано одно полезное сообщение
Ответ: Регулярные выражения

HAMANN, благодарю!

А можно еще немного скорректировать это с учетом что name - имя абстрактное и может принимать любые значения?

И еще вопрос с позволения. Как я понимаю, вот этот кусок - {3,} проверяет на количество символов? И если к примеру домен будет something.travel - нужно заменить на {5,}? Будут ли в таком случае приниматься значения меньше 5-ти символов?

Правильно я понимаю что для того чтобы принимать такие значения нужно преписать так:

preg_match('#^[a-z0-9-]\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})(\.[a-z0-9-]{4,})(\.[a-z0-9-]{5,})+$#', $str);
(Offline)
 
Ответить с цитированием
Старый 21.01.2011, 10:42   #6
HAMANN
Нуждающийся
 
Аватар для HAMANN
 
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений
(для 24 пользователей)
Ответ: Регулярные выражения

вообще там универсальный Домен. Любой пройдет. запись {3,} значит от 3х символов и больше. (причем это только первое слово в домене) а последующие от 2х символов и больше. Твой домен проходит под это регулярное выражение.

А можно еще немного скорректировать это с учетом что name - имя абстрактное и может принимать любые значения?
Ну если совсем любое то:
$str 'name||domain.com';
preg_match('#^.+\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+$#'$str); 
если только слово:
$str 'name||domain.com';
preg_match('#^\w+\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+$#'$str); 
причем если в имени будет использоваться например русский язык то нужно модификатор 'u' поставить (UTF- и 'i' если без учета регистра

$str 'name||domain.com';
preg_match('#^\w+\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+$#u'$str); 
можно только англ. буквы и цифры

$str 'name||domain.com';
preg_match('#^[a-z0-9]+\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+$#'$str); 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Zanthon (21.01.2011)
Старый 21.01.2011, 11:18   #7
Zanthon
AnyKey`щик
 
Регистрация: 24.12.2010
Сообщений: 6
Написано одно полезное сообщение
Ответ: Регулярные выражения

Ага. Немного перепутал. Начинает вопрос проясняться.

Если не надоело отвечать, еще один маленький вопросик.

А если я к примеру задам такие две строки:

$str = 'name||domain.com||blablabla';
или
$str = 'name||domain.com.mx';

как тогда отреагирует выражение? Для меня в идеале было бы чтобы в первом случае получился фейл, а во втором проверка была бы пройдена.
(Offline)
 
Ответить с цитированием
Старый 21.01.2011, 16:49   #8
HAMANN
Нуждающийся
 
Аватар для HAMANN
 
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений
(для 24 пользователей)
Ответ: Регулярные выражения

может лучше конкретно задачу скажешь? а то так сложно ориентироваться. пройдет только второе

1 Вариант.
if(preg_match('#^\w+\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+$#'$str)) {
   
//проверка пройдена
} else {
  
//аборт

2 Вариант:
if(!preg_match('#^\w+\|\|[a-z0-9-]{3,}(\.[a-z0-9-]{2,})+$#'$str)) //аборт

//проверка пройдена 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Zanthon (22.01.2011)
Старый 22.01.2011, 02:31   #9
Zanthon
AnyKey`щик
 
Регистрация: 24.12.2010
Сообщений: 6
Написано одно полезное сообщение
Ответ: Регулярные выражения

Да собственно это и была конкретная задача. Спасибо громадное, проверил варианты и все сработало на 5-ку!

Что то никак мне эти регулярки не даются...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HAMANN (22.01.2011)
Старый 22.01.2011, 03:33   #10
HAMANN
Нуждающийся
 
Аватар для HAMANN
 
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений
(для 24 пользователей)
Ответ: Регулярные выражения

Да тоже долго допирал. До сих пор не все знаю.
(Offline)
 
Ответить с цитированием
Старый 22.01.2011, 05:18   #11
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Регулярные выражения

Сообщение от MoKa Посмотреть сообщение
HAMANN, а где про эти выражения почитать можно? (имеется ввиду, на твой взгляд где лучше)?
Несколько месяцев назад прочитал про регулярные выражения в википедии и узнал много полезных новых тонкостей для себя, о которых прошлые несколько лет и вовсе не знал.
http://ru.wikipedia.org/wiki/Регулярные_выражения
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (22.01.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:26.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com