почему это $html = '<a href="/browse/product.do?cid=1&vid=1&pid=1" class="productItemName">what is going on here</a>'; $dom = new DOMDocument(); $dom->loadhtml($html); $xpath = new DOMXPath($dom); $selectors['link'] = '//a/@href'; $links_nodeList = $xpath->query($selectors['link']); foreach ($links_nodeList as $link) { $links[] = $link->nodeValue; } echo("<p>links</p>"); echo("<pre>"); print_r($links); echo("</pre>"); вывод links Array ( [0] => /browse/product.do?cid=1&vid=1&pid=1 ) и не links Array ( [0] => /browse/product.do?cid=1&vid=1&pid=1 […]
Возможный дубликат: Будет ли XPath 2.0 и / или XSLT 2.0 реализован на PHP? Я думаю, что я использую xpath 1.0, потому что у меня нет функции lower-case() . Моя версия PHP – 5.3.8 . Как обновить xpath до версии 2.0?
Я использую DOMDocument и DOMXPath в PHP для поиска элементов в документе HTML. Этот документ содержит объекты HTML, такие как & nbsp; и я хотел бы, чтобы эти объекты сохранялись в выходе XPath. $doc = new DOMDocument(); $doc->loadHTML('<html><head></head><body> Test</body></html>'); $xpath = new DOMXPath($doc); $nodes = $xpath->query('//body'); foreach($nodes as $node) { echo $node->textContent; } Этот код производит […]
Я использую xpath для удаления <p> </p> $nodeList = $xpath->query("//p[text()=\"\xC2\xA0\"]"); # foreach($nodeList as $node) { $node->parentNode->removeChild($node); } но он не удаляет это, <p><strong><br /> </strong></p> или такого рода, <p><strong> </strong></p> Как я могу их удалить? Или, может быть, регулярное выражение, которое я должен использовать?
Я пытаюсь разобрать канал blogspot с помощью xpath, но он, похоже, не работает со всем, что я пытаюсь. Я не уверен, что это из-за пространств имен или что, но я надеялся, что кто-то сможет мне помочь. Вот код: $xml = simplexml_load_file('http://feeds.feedburner.com/blogspot/MKuf'); $next = $xml->xpath("//link[@rel='next']"); print_r($next); Это просто возвращает пустой массив, и этого не должно быть. […]
Пока я работаю над HTML-файлом, подобным этому <div name="node"></div> <div></div> <div name="node"></div> <div></div> <div name="node"></div> <div></div> Я хочу выбрать следующий узел каждого «div», который имеет свое имя, равное «узлу», и я пытаюсь: $dom = new DOMdocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); $els = $xpath->query("//div[@name='node']"); $j = 0; foreach($els as $el) { if($el->next_sibling()) $j++; } echo […]
Единственный способ, которым я знаю в PHP для выполнения запроса XPath в DOM, – это DOMXPath , только работающий с DOMDocument : public __construct ( DOMDocument $doc ) Есть ли аналогичный механизм для поиска относительно DOMElement ? Проблема заключается в том, что мне нужно искать abritrary XPath (который я не контролирую) относительно DOMElement . Я […]
Я использую внутренний domDocument в классе $this->doc->dom , и я думаю, что это нормально, потому что $this->doc->dom->saveXML() работает и показывает мой XML, что-то вроде <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>04</title> <link href="css/04.css" rel="stylesheet" type="text/css"/> </head> … И когда я использую $xpath = new DOMXpath($this->doc->dom); $elements = $xpath->query('//link'); не сообщалось […]
0 Вот соответствующая часть моего rss-канала: <channel> <description></description> <title>Untitled</title> <generator>Tumblr (3.0; @xxx)</generator> <link>http://xxx.tumblr.com/</link> <item> <title>Title</title> <description><figure><img src="http://img.ruphp.com/php/tumblr_inline_nkp9z234d0uj.jpg"/></figure></description> <link>http://xxx.tumblr.com/post/99569244093</link> <guid>http://xxx.tumblr.com/post/99569244093</guid> <pubDate>Thu, 09 Oct 2014 11:19:33 -0400</pubDate> </item> </channel> Используя ответ от других вопросов здесь, я попробовал это: $content = file_get_contents("http://xxx.tumblr.com/rss"); $feed = new SimpleXmlElement($content); $imgs = $feed->channel->item[0]->description->xpath('//img'); foreach($imgs as $image) { echo (string)$image['src']; }; Это возвращает […]
Есть ли способ использовать Xpath для разбора текста между двумя тегами SETS ? Например, см. Пример: <div class="par"> <p class="pp"> <span class="dv">1 </span>Blah blah blah blah. <span class="dv">2 </span> Yada yada yada yada. <span class="dv">3 </span>Foo foo foo foo. </p> </div> <div class="par"> <p class="pp"> <span class="dv">4 </span>Hmm hmm hmm hmm. </p> </div> Я хочу […]