![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| harper |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.5.2006 Репутация: нет Всего: нет |
Есть строка вида
<a href="docs.zip">Документы</a><a href="note.zip">Заметки</a> регулярному выражению <a href="(.*)?">Заметки<\/a> (подмаске) соответствует строка docs.zip">Документы</a><a href="note.zip URL однако хотелось бы увидеть результатом note.zip т. к. она в принципе тоже удоволетворяет данному выше регулярному выражению, но выбор соответсвующей подмаске подстроки производится видимо нахождением первого совпадения, а не минимального (изменение "жадности" не помогает). |
|||
|
||||
| Eugene_Bond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
1. Жадность лечится так: (.*) (.*?)
2. Лучше сделать (.*)? ([^"]+) |
|||
|
||||
| harper |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.5.2006 Репутация: нет Всего: нет |
||||
|
||||
| skifoz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 23.1.2006 Где: Россия Репутация: нет Всего: 1 |
вот так ищеца href
|
|||
|
||||
| harper |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.5.2006 Репутация: нет Всего: нет |
skifoz, специфика задачи такая что эти ссылки могут быть как похожи так и не похожи (и не обязательно что там будут ссылки вообще), поэтому такой вариант не подходит, но что интересно, в предложенном вами коде при исключении ? влияние жадности ощутимо, для кода
такого влияния не наблюдается, хотя вроде бы должно |
|||
|
||||
| Eugene_Bond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
Не вижу ни одной причины почему не [^"]+ Даже если учесть, что html может быть кривым и атрибут href будет окружен одиночными кавычками или вообще без кавычек, то вариант с ".*" все равно менее правильный. А в теле URL кавычки быть в принципе не может Добавлено @ 15:57 1. Кстати, если искать именно a href="(.*?)">Заметки</a> то как раз жадность может и помочь: preg_match_all('|.*a href="(.*?)">Заметки</a>|', $text, $find) 2. А зачем preg_match_all ? ссылок на заметки может быть много? |
|||
|
||||
| harper |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.5.2006 Репутация: нет Всего: нет |
потому что это лишь локальная задача, глобальная - выборка данных из текста по некоторому шаблону, который не является шаблоном в формате PCRE, но в последствии приводится к нему в несколько этапов
огромное спасибо, .* в начале упустил удобно, так и не объяснишь почему, но удобно |
|||
|
||||
| CyClon |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 1 Всего: 4 |
Юзайте preg_match('#...#isU', $string);
Именно модификатор U отвечает за жадность. Добавлено @ 15:31
Здесь используем эквивалент
Находит ВСЕ вхождения строки, в отличии от preg_match (Находит одно, первое-попавшееся вхождение строки). |
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |