Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:如何将html作为xml使用?如何查找特定节点并获取这些节点中的文本?_Php_Xml_Html Parsing - Fatal编程技术网

php:如何将html作为xml使用?如何查找特定节点并获取这些节点中的文本?

php:如何将html作为xml使用?如何查找特定节点并获取这些节点中的文本?,php,xml,html-parsing,Php,Xml,Html Parsing,假设我有以下网页: <html> <body> <div class="transform"> <span>1</span> </div> <div class="transform"> <span>2</span> </div> <div class="transform">

假设我有以下网页:

<html>
<body>
 <div class="transform">
    <span>1</span>
 </div>
 <div class="transform">
    <span>2</span>
 </div>
 <div class="transform">
    <span>3</span>
 </div>
</body>
</html>

1.
2.
3.
我想找到所有包含类转换的div元素,并获取每个div元素中的文本

我知道我可以用正则表达式轻松地做到这一点,但我想知道,如果没有正则表达式,但解析xml并找到所需的节点,我如何做到这一点

更新 我知道在这个例子中,我可以遍历所有的div。但这只是一个例子来说明我需要什么

在本例中,我需要查询包含属性
class=transform


谢谢

可以使用SimpleXML-请参见下面的示例:

$string = "<?xml version='1.0'?> 
<html>
<body>
 <div class='transform'>
    <span>1</span>
 </div>
 <div>
    <span>2</span>
 </div>
 <div class='transform'>
    <span>3</span>
 </div>
</body>
</html>";

$xml = simplexml_load_string($string);
$result = $xml->xpath("//div[@class = 'transform']");

foreach($result as $node) {
  echo "span " . $node->span . "<br />";
}
$string=”
1.
2.
3.
";
$xml=simplexml\u load\u string($string);
$result=$xml->xpath(//div[@class='transform']);
foreach($result作为$node){
回显“span.”$node->span.
; }

用xpath更新了它…

好的,我想要的东西可以用php xpath轻松实现:

例如:

http://ditio.net/2008/12/01/php-xpath-tutorial-advanced-xml-part-1/

您可以使用xpath来处理这些项。对于该特定查询,您将使用:

div[contains(concat(" ",@class," "), concat(" ","transform"," "))]
完整的PHP示例:

<?php
  $document = new DomDocument();
  $document->loadHtml($html);
  $xpath = new DomXPath($document);
  foreach ($xpath->query('div[contains(concat(" ",@class," "), concat(" ","transform"," "))]') as $div) {
    var_dump($div);
  }

之前已经回答过:我想查询包含属性
class=transform