Проблема с квадратными скобками ([]) в xpath

257
18 января 2018, 21:33

Есть такой небольшой кусок кода с использованием domDocument и xpath.

При использовании xpath query оно преоброзует квадратные скобки в какие то символы.

Как обойти это?

Вот сам код.

<?php    
    $str = '<ul class="top"><li><a href="[T]XX[/T]">Testing</a></li></ul>';
    $str = '<?xml encoding="utf-8" ?>'.$str;
    $dom = new DomDocument();
    @$dom->loadHTML($str);
    $xpath_menu_bottom = new DomXpath($dom);
    $x = $xpath_menu_bottom->query('(//ul[@class="top"])[1]')->item(0);
    var_dump($dom->saveHTML($x));
?>
Answer 1

Необходимо раскодировать закодированное значение:

$htmlEncoded = $dom->saveHTML($x);
$htmlDecoded = urldecode($htmlEncoded);
var_dump($htmlDecoded);

Результат ДО ($htmlEncoded):

<ul class="top"><li><a href="%5BT%5DXX%5B/T%5D">Testing</a></li></ul>

Результат ПОСЛЕ ($htmlDecoded):

<ul class="top"><li><a href="[T]XX[/T]">Testing</a></li></ul>
READ ALSO
Управление доступом

Управление доступом

Как еще можно обойти защищенность полей в ооп? кроме дружественных функций

299
Перегрузка операторов - уточнение

Перегрузка операторов - уточнение

Почему вот это называется перегрузкой оператора? cout разве не выводит пользовательские типы БЕЗ перегрузки?

330
expected &#39;,&#39; or &#39;;&#39; before &#39;do&#39; Ошибка при компиляции

expected ',' or ';' before 'do' Ошибка при компиляции

Начинаю компилировать и выходит ошибка кода, вот: (недоделал пока)

320
Агрегация - доступ к членам класса

Агрегация - доступ к членам класса

Имеет ли при агрегации класс доступ к protected-полям другого, агрегированного класса?

367