Автор Тема: Что это значит?  (Прочитано 8007 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн PHP'шкин

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 20
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Что это значит?
« : 22 Марта 2008, 00:04:54 »
Попалось мне такое регулярное выражение:

preg_match("/revalidate(.*?)Location/is", $aa, $bb)

Сколько не искал, так не нашел, что значит в этом выражении последовательность "(.*?)" и "is" после слеша в конце. Кто знает, объясните по-подробнее (ссылки приветствуются). Спасибо
Да будет с Вами PHP

Оффлайн PHP'шкин

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 20
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Что это значит?
« Ответ #1 : 22 Марта 2008, 17:33:04 »
Вроде сюда написал. Что не знает никто?
Да будет с Вами PHP

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Что это значит?
« Ответ #2 : 24 Марта 2008, 12:15:37 »
(.*?)- соотведствует любой строке или пустоте, от revalidate до первого совпадения Location и все это передать в массив.
/is - настройки регулярки,
сылки: google -> "Регулярные выражения" -> Search
там найдеш подробно обо всем.
Не все является тем чем кажется.

Оффлайн So1

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://my3w.info/
Что это значит?
« Ответ #3 : 24 Марта 2008, 23:24:45 »
(.*?) - люая строка или ее отсутствие. Данные .*? могут быть получены через $1.
Тут любая строка задается через .* и использование минимизатора квантификатора ? по сути является бессмысленным, т.е. будет работать и без знака вопроса.
/is:
i говорит о том что не важен регистр символов
s говорит о том что метасимвол ТОЧКА используется для всех символов включая символ новой строки, т.е. ищутся совпадения такие как:
revalidateLocation
revalidate тра ля ля Location
revalidate тра
ля ля
Location

Для первого случая в $1 = "", для второго случая $1 будет содержать "тра ля ля", третий $1 = " тра \\nля ля \\n".

Благодаря /i еще валидно следующее
REVALIDATE>>>LOCATION


В помощь гугл. Ну а там уже посмотришь запросы какие нужны. Я думаю что есть смысл глянуть что то вроде
"PCRE модификаторы"
"синтаксис PCRE REGEX"

Оффлайн PHP'шкин

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 20
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Что это значит?
« Ответ #4 : 25 Марта 2008, 01:30:33 »
Всем спасибо за ответы.
Цитировать
Тут любая строка задается через .* и использование минимизатора квантификатора ? по сути является бессмысленным, т.е. будет работать и без знака вопроса.

Как показали эксперименты, при отсутствии знака вопроса регулярное выражение находит все строки в плоть до последнего включения строки Location (когда их несколько). При наличии знака вопроса строка Location входит в результат только единожды (при первом входе в $aa).
Да будет с Вами PHP

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28