php xpath скрипт синтаксического анализа src - PullRequest
1 голос
/ 28 апреля 2011

Я пытаюсь проанализировать все значения ссылок скрипта src, но получаю пустой массив.

$dom = new DOMDocument();
$file = @$dom->loadHTML($remote);

$xpath = new DOMXpath($dom);

$link = $xpath->query('//script[contains(@src, "pcode")]');

$return = array();
foreach($link as $links) {
  $return[] = $links->nodeValue;
}

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

Ваш XPATH-запрос выглядит корректным, должен захватывать каждый <script> с атрибутом src, содержащим pcode.

Если он возвращает пустой массив, нужно проверить несколько вещей:

Убедитесь, что документ DOM загружается и не возникает ошибок при загрузке его в XPATH. Возможно, что подавленная нагрузка DOM-> выдает ошибку или предупреждение. Если вы делаете запрос в другом месте, и это работает, игнорируйте это.

Убедитесь, что теги в вашем документе совпадают с регистром.

Попробуйте

$link = $xpath->query("//script[contains(@src, 'pcode')]");

Кажется глупым, просто поменяйте кавычки, но вы никогда не знаете.

1 голос
/ 14 декабря 2011

Обязательно проверьте пространства имен. Если ваш HTML содержит объявление, подобное этому

<html xmlns="http://www.w3.org/1999/xhtml">

Вам необходимо зарегистрировать пространство имен в документе

$xp = new domxpath( $xml);
$xp->registerNamespace('html', 'http://www.w3.org/1999/xhtml' );

И ищите такие элементы

$elements = $xp->query( "//html:script", $xml );

Пространства имен, потому что паранойя порождает уверенность.

...