Подсчет пунктов отображаемого меню - PHP / Regex / XPath - PullRequest
1 голос
/ 20 августа 2010

Ребята, мне нужна помощь!У меня есть полностью визуализированное меню (безопасный вывод html) ... и мне нужно число <li> ТОЛЬКО его первого уровня ... пример:

<li><a>first</a></li>
<li><a>first</a></li>
<li>
  <a>first</a>
  <ul>
    <li><a>second</a></li>
    <li>
      <a>second</a>
      <ul>
        <li><a>third</a></li>
      </ul>
    </li>
  </ul>
</li>
<li><a>first</a></li>
<li>
  <a>first</a>
  <ul>
    <li><a>second</a></li>
    <li><a>second</a></li>
  </ul>
</li>

Таким образом, результат должен быть 5 пунктов...

примечание: на данный момент первый уровень еще не обернут <ul> ... так что это может помочь регулярному выражению ... Я считаю, что это можно сделать с помощью запроса XPath какхорошо ... но: (

Если возможно, я хотел бы понять 2 подхода ...: D

спасибо !!!

1 Ответ

1 голос
/ 20 августа 2010

Допустим, вы считаете первичные li внутри тега <div>:

вы будете пытаться это:

$string = "<div><li><a>first</a></li><li><a>first</a></li><li><a>first</a><ul><li><a>second</a></li><li><a>second</a><ul><li><a>third</a></li></ul></li></ul></li><li><a>first</a></li><li><a>first</a><ul><li><a>second</a></li><li><a>second</a></li></ul></li></div>";

$xml = new SimpleXMLElement($string);

/* Search for <div><li> */
$result = $xml->xpath('/div/li');
echo count($result);

напечатает:

5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...