|
|
|
|
$pattern = '%<div class=\"fine xdiv_justify\"><h1'.
' class=\"title\">([^<]+)<[^>]*>[\s]+<[^>]*><[^>]*><[^>]*>'.
'([^<]+)<div[^<]*><a class=\"text_link\" href=\"([^\"]*)'.
'\">[^<]+<[^>]*><[^>]*><[^>]*>[^<]+<[^>]*>([^<]+)<[^>]*>'.
'[^<]+<[^>]*>([^<]+)<[^>]*>%isU';
|
это регулярка для парсинга страницы с новостями, каждая новость размещена в отдельном блоке, пытаюсь все отфильтровать как мне нужно, но иногда в блоке есть несколько картинок, и не всегда нужных участков кода, как в данном случае задать ссылку на возможное повторение предыдущего куска шаблона? | |
|
|
|
|
автор: ??? (26.04.2008 в 09:46) |
|
|
для: Emm
(25.04.2008 в 21:12)
| | бывают ссылки на подмаски, типа \\1 , но они полностью соответствуют совпавшему при первом прохождении.
а бывают просто подмаски повторяющиеся n раз, типа (<[^>]+>)+
можно попробовать ещё так
<?php
$content = ' <!-- -->
<div class="fine xdiv_justify"><h1 class="title">Название титле</h1>
<span class="pos"><img src="/temp/index/img.png" alt="альт" style="width:172px;height:62px;" border="0"></span>
Описание
<div class="procedure"><a class="text_link" href="/transition/link.php?ad=in17#ok3">читать далее... / скачать</a><span class="text"><span class="sc">|</span> cтатус: текст1 <span class="sc">|</span> версия: 3.1-2 </span></div>
</div>
<!-- -->';
preg_match_all('#(?<=<h1 class=\"title\">)([^<]+)(?:\s*<[^>]+>)+((?:(?!<div ).)+)<div[^>]+>.*?(<a[^<]+</a>).*?</span>\s*([^<]+).*?</span>\s*([^<]+)#is',$content,$out);
print_r($out);
?>
|
но непонятно где именно бывает "несколько картинок, и не всегда нужных участков кода" | |
|
|
|
|
|
|
|
для: ???
(26.04.2008 в 09:46)
| | Спасибо за подсказку :) , вопрос внезапно решил )) добавлением .* в своем выражении, у меня там идет две картинки подряд. | |
|
|
|