Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: preg_match offset
Форумы портала PHP.SU » PHP » Регулярные выражения » preg_match offset

Страниц (1): [1]
 

1. SKDzR - 12 Августа, 2010 - 16:31:04 - перейти к сообщению
Доброе время суток, подскажите, пожалуйста, как сделать пропуск первого вхождения?Т.е. есть документ с содержимым, например:
CODE (html):
скопировать код в буфер обмена
  1. <body>
  2.  
  3. <table><tr><td>
  4. {topnews gogo=123 razvda=yes}
  5. </td></tr></table>
  6.  
  7. <table><tr><td>
  8. {topnews gogo=852 razvda=no}
  9. </td></tr></table>
  10.  
  11. </body>


Используется:
PHP:
скопировать код в буфер обмена
  1. preg_match ( "#\{topnews (.*)\}#", $tpl->copy_template, $matches );

парсит только первую строку {topnews}, на вторую внимания не обращает. а нужно мне наоборот, чтобы первую пропустил, а начал со второй.

Спасибо.
2. JustUserR - 13 Августа, 2010 - 02:19:57 - перейти к сообщению
SKDzR пишет:
Парсит только первую строку {topnews}, на вторую внимания не обращает. а нужно мне наоборот, чтобы первую пропустил, а начал со второй
В вашем случае при осуществлении поиска заданной подстроки по шаблону для любого символа - используется жадная модификация квантификатора * что приводит к тому что в найденное соответствии попадают все данные - от первого вхождения шаблона до .* до последнего вхождения после него Для осуществления выборки только одного требуемого элемента можно использовать соответствующий нежадный квантификатор записываемый синтаксически как .*? - а для пропуска первого вхождения можно использовать позитивный просмотр назад - или дополнительное соответствие для первой подстроки в шаблоне обрамленное в незапоминающие круглые скобки
3. SKDzR - 13 Августа, 2010 - 13:38:53 - перейти к сообщению
спасибо.
проблема решилась preg_match_all и циклом
4. JustUserR - 13 Августа, 2010 - 23:58:17 - перейти к сообщению
SKDzR пишет:
Спасибо. проблема решилась preg_match_all и циклом
Пожалуйста! В том случае если при составлении регулярных выражений на PHP вам удобнее использовать нежадные квантификаторы по умолчанию заместо зажных - то вы можете использовать модификатор /U которые выполняет соответствующую настройку

 

Powered by ExBB FM 1.0 RC1