Добрый день, уважаемые коллеги. Задача: распарсить вот этот текст: | Код | <ul> <li><a href="index.php?SECTION_ID=785">item 1</a> <ul> <li><a href="index.php?SECTION_ID=1742">item 2</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=1743">item 3</a></li> <li><a class="deepest" href="index.php?SECTION_ID=1744">item 4</a></li> </ul> </li> <li><a href="index.php?SECTION_ID=1745">item 5</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=1746">item 6</a></li> <li><a class="deepest" href="index.php?SECTION_ID=1747">item 7</a></li> </ul> </li> <li><a href="index.php?SECTION_ID=791">item 8</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=792">item 9</a></li> <li><a class="deepest" href="index.php?SECTION_ID=793">item 10</a></li> </ul> </li> </ul> </li> <li><a href="index.php?SECTION_ID=862">item 11</a> <ul> <li><a href="index.php?SECTION_ID=2776">item 12</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=2777">item 13</a></li> <li><a class="deepest" href="index.php?SECTION_ID=2778">item 14</a></li> <li><a class="deepest" href="index.php?SECTION_ID=2782">item 15</a></li> </ul> </li> <li><a href="index.php?SECTION_ID=2793">item 16</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=2794">item 17</a></li> <li><a class="deepest" href="index.php?SECTION_ID=2795">item 18</a></li> </ul> </li> <li><a href="index.php?SECTION_ID=2796">item 19</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=2797">item 20</a></li> <li><a class="deepest" href="index.php?SECTION_ID=2798">item 21</a></li> <li><a class="deepest" href="index.php?SECTION_ID=5779">item 22</a></li> </ul> </li> <li><a href="index.php?SECTION_ID=2800">item 23</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=5780">item 24</a></li> <li><a class="deepest" href="index.php?SECTION_ID=2806">item 25</a></li> <li><a class="deepest" href="index.php?SECTION_ID=2807">item 26</a></li> </ul> </li> <li><a href="index.php?SECTION_ID=2808">item 27</a> <ul> <li><a class="deepest" href="index.php?SECTION_ID=2810">item 28</a></li> <li><a class="deepest" href="index.php?SECTION_ID=2811">item 29</a></li> </ul> </li> <li><a class="deepest" href="index.php?SECTION_ID=2783">item 30</a></li> </ul> </li> <li><a class="deepest" href="index.php?SECTION_ID=912">item 31</a></li> </ul> |
Пытаюсь решить задачу с помощью такого кода: | Код | private function regularCategoryParse(&$buffer='') { if(!$buffer) { $buffer=&$this->buffer; } else { echo '<BR>parent: '.$this->_pid.'; current: '.$buffer[2]; $_pid=$this->_pid; $this->_pid=$buffer[2]; $buffer=$buffer[4]; } preg_replace_callback('/<li><a href=\"([^"]+SECTION_ID=(\d+))">([^<]*)<\/a>[\s\r\n]*?<ul>(.*?<\/ul>)/s',array($this,'regularCategoryParse'),$buffer); $this->_pid=$_pid; // preg_replace_callback('/'.$this->regularCategory2.'/s',array($this,'regularCategoryCallBack2'),$buffer); }
|
Всё вроде бы хорошо, но жизненно важно корректно распознать родительский идентификатор (SECTION_ID из "a href=..."). Т.е. в пятой строке выдается неверный ид - рекурсивный обход так проходит. Как быть? Подскажите, плз.
|