繁体   English   中英

php DOMdocument如何select多个标签元素?

[英]php DOMdocument how to select multiple tag elements?

我在下面有以下代码

  $Dom = new DOMDocument;
  @$Dom->loadHTML("<?xml version='1.0' encoding='UTF-8'?><body>$body</body>");
  $links = $Dom->getElementsByTagName('a');
  $arr = array();
  foreach ($links as $link) {
    if ($link->attributes[0]->name == 'href' && $link->attributes[0]->value != '#') {
      $link->attributes[0]->value = 'changed.com';
    }
  }

我还想添加类似这样的按钮标签$Dom->getElementsByTagName('a,button');

您可以使用DOMXPath::query()或扩展DOMElement并通过DOMDocument::registerNodeClass()

您可以使用XPath使用多重选择器: $xpath->query('//a | //button')

// HTML sample 
$body = '<p><a href="#">link</a><a href="#">another</a><button>button</button><i>some text</i></p>';

// Load and query
$dom = new DOMDocument;
@$dom->loadHTML("<?xml version='1.0' encoding='UTF-8'?><body>$body</body>");
$xpath = new DOMXPath($dom);
$nodelist = $xpath->query('//a | //button');

// Display information
echo "Length is : " . $nodelist->length, PHP_EOL;
foreach ($nodelist as $index => $node) {
    echo "- Node $index is $node->nodeName" . PHP_EOL;
}

Output:

Length is : 3
Node 0 is a
Node 1 is a
Node 2 is button

另见现场演示 (3v4l.org)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM