Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 xpath获取所有属性?_Php_Xpath - Fatal编程技术网

如何使用PHP xpath获取所有属性?

如何使用PHP xpath获取所有属性?,php,xpath,Php,Xpath,给定以下HTML字符串: <div class="example-class" data-caption="Example caption" data-link="https://www.example.com" data-image-url="https://example.com/example.jpg"> </div> 我知道如何获得个人属性,但我希望一下子就能做到。以下是我目前拥有的: function get_data($html = '') {

给定以下HTML字符串:

<div 
class="example-class" 
data-caption="Example caption" 
data-link="https://www.example.com" 
data-image-url="https://example.com/example.jpg">
</div>
我知道如何获得个人属性,但我希望一下子就能做到。以下是我目前拥有的:

function get_data($html = '') {

    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $xpath = new DOMXPath($dom);

    $nodes = $xpath->query('//div/@data-link');

    foreach ($nodes as $node) {
        var_dump($node);
    }

}

谢谢

我认为这应该是你想要的——或者至少,给你继续的基础

    define('BR','<br />');
    $strhtml='<div 
        class="example-class" 
        data-caption="Example caption" 
        data-link="https://www.example.com" 
        data-image-url="https://example.com/example.jpg">
        </div>';

    $dom=new DOMDocument;
    $dom->loadHTML( $strhtml );

    $xpath=new DOMXPath( $dom );
    $col=$xpath->query('//div');
    if( $col ){
        foreach( $col as $node ) if( $node->nodeType==XML_ELEMENT_NODE ) {
            foreach( $node->attributes as $attr ) echo $attr->nodeName.' '.$attr->nodeValue.BR;
        }
    }
    $dom = $col = $xpath = null;
define('BR','
'); $strhtml='10〕 '; $dom=新的DOMDocument; $dom->loadHTML($strhtml); $xpath=newdomxpath($dom); $col=$xpath->query('//div'); 如果($col){ 如果($node->nodeType==XML\u元素\u节点),则foreach($col作为$node){ foreach($node->attributes as$attr)echo$attr->nodeName.''.$attr->nodeValue.BR; } } $dom=$col=$xpath=null;
我认为这应该是你想要的——或者至少给你继续的基础

    define('BR','<br />');
    $strhtml='<div 
        class="example-class" 
        data-caption="Example caption" 
        data-link="https://www.example.com" 
        data-image-url="https://example.com/example.jpg">
        </div>';

    $dom=new DOMDocument;
    $dom->loadHTML( $strhtml );

    $xpath=new DOMXPath( $dom );
    $col=$xpath->query('//div');
    if( $col ){
        foreach( $col as $node ) if( $node->nodeType==XML_ELEMENT_NODE ) {
            foreach( $node->attributes as $attr ) echo $attr->nodeName.' '.$attr->nodeValue.BR;
        }
    }
    $dom = $col = $xpath = null;
define('BR','
'); $strhtml='10〕 '; $dom=新的DOMDocument; $dom->loadHTML($strhtml); $xpath=newdomxpath($dom); $col=$xpath->query('//div'); 如果($col){ 如果($node->nodeType==XML\u元素\u节点),则foreach($col作为$node){ foreach($node->attributes as$attr)echo$attr->nodeName.''.$attr->nodeValue.BR; } } $dom=$col=$xpath=null;
在XPath中,可以使用
@*
引用任何名称的属性,例如:

$nodes = $xpath->query('//div/@*');

foreach ($nodes as $node) {
    echo $node->nodeName ." :  ". $node->nodeValue ."<br>";
}

在XPath中,可以使用
@*
引用任何名称的属性,例如:

$nodes = $xpath->query('//div/@*');

foreach ($nodes as $node) {
    echo $node->nodeName ." :  ". $node->nodeValue ."<br>";
}

感谢这一点,当它起作用时,我选择另一张海报的答案是基于它的简单性和与我已有的答案的相似性。感谢这一点,当它起作用时,我选择另一张海报的答案是基于它的简单性和与我已有的答案的相似性。非常感谢。这很好——尽管在我的例子中,我将项目推送到如下数组:$myarray=array()$myarray[$node->nodeName]=$node->nodeValue;谢谢。这很好——尽管在我的例子中,我将项目推送到如下数组:$myarray=array()$myarray[$node->nodeName]=$node->nodeValue;