
12.02.2009, 00:56
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
Можно и одним проходом, главное составить нужную регулярку. Если бы у тебя тег li был закрыт, то регулярка выглядела бы так:
PHP код:
<?php
$str = <<<STR
<div>
<h1>STR_1a</h1>
<h2>STR_2a</h2>
<ol>
<li> STR_3a</li>
<li> STR_4a</li>
<li> STR_5a</li>
</ol>
</div>
<div>
<h1>STR_1b</h1>
<h2>STR_2b</h2>
<ol>
<li> STR_3b</li>
<li> STR_4b</li>
<li> STR_5b </li>
<li> STR_6b</li>
<li> STR_7b</li>
</ol>
</div>
STR;
preg_match_all('#<(h[12]{1}|li)>([^>]*)</\\1>#s', $str, $out);
print_r($out[2]);
?>
Или если всё таки они не закрыты, то парсим вот так:
PHP код:
<?php
$str = <<<STR
<div>
<h1>STR_1a</h1>
<h2>STR_2a</h2>
<ol>
<li> STR_3a
<li> STR_4a
<li> STR_5a
</ol>
</div>
<div>
<h1>STR_1b</h1>
<h2>STR_2b</h2>
<ol>
<li> STR_3b
<li> STR_4b
<li> STR_5b
<li> STR_6b
<li> STR_7b
</ol>
</div>
STR;
preg_match_all("#<(h[12]{1}|li)>([^>]*)(</h[12]{1}>|\r\n)#s", $str, $out);
print_r($out[2]);
?>
Хитрый финт ушами))
|
|
|