Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Паттерн больше 80 символов


Автор: cia 25.1.2008, 20:20
Возможно, вопрос ламерский, но...
Как мне функцией 
Код

preg_match_all('/<a href="(.*?)" target/' ...

захватить строки больше 80 символов (79 с нулем на конце)?
А то некоторые урлы весьма длинные.

Автор: ZlojEzh 25.1.2008, 22:36
если нужны именно url'ы длинее 80 символов, то
Код

preg_match_all('/<a href="([^"]{80,})" target/' ...

Автор: gta4kv 26.1.2008, 11:09
А если не конкретно 80, то наверное так:

Код

preg_match_all('/<a href="([^"]{0,500})" target/' ...

Автор: cia 27.1.2008, 20:25
Цитата(ZlojEzh @  25.1.2008,  22:36 Найти цитируемый пост)
если нужны именно url'ы длинее 80 символов, то

Нет, нужны все урлы.


Цитата(gta4kv @  26.1.2008,  11:09 Найти цитируемый пост)
код PHP1:preg_match_all('/<a href="([^"]{0,500})" target/' ...


Пробовал. Это не работает - все равно захватывает только короткие строки.
Может нужно какойнить предикат поставить или в настроках пхп (локалхост) ?

Автор: SelenIT 27.1.2008, 21:29
Очевидно, у исходного фрагмента никаких проблем с длиной захватываемой строки нет. То, что ссылки с длинными URLами, по иронии судьбы, не имеют атрибута target сразу после href, или имеют href без кавычек, или набраны в другом регистре, или еще чем-то не соответствуют паттерну - не более чем случайное совпадение. Программа делает ровно то, что программист приказал ей делать, а не то, что он при этом имел в виду - и никакие волшебные настройки и таинственные предикаты пока не в силах это исправить...

Можно попробовать просто более универсальный паттерн, вроде следующего - '/<a[^<]+href\s*=\s*(["\']?)(.*?)\\1[\s>]/is'

Автор: cia 28.1.2008, 17:03
Вобщем так.
Закинул тестовый скрипт на хост в сети и убедился что там он работает.
Долго пытался найти у себя какиенить настройки - безуспешно.
На моем компе заработало только после полного сноса и переустановки ПХП. В чем там глюк был не знаю.
И спасибо всем, кто пытался помочь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)