gpt4 book ai didi

PHP, DOMElement 只获取当前节点的值

转载 作者:行者123 更新时间:2023-11-28 05:19:06 74 4
gpt4 key购买 nike

这是我的代码:

<?php

$html = '<a href="url">My Asked text for value <span class="time">15min</span></a>';

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

$links = $dom->getElementsByTagName('a');
foreach ($links as $link){print_r($link);
echo $link->nodeValue."\n"; // returns: My Asked text for value 15min
}

它返回:My Asked text for value 15min

但我只想要:我要求的值(value)文本

如何解决这个问题,谢谢

最佳答案

当然可以使用解析器方法:

<?php
$html = '<a href="url">My Asked text for value <span class="time">15min</span></a>';

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

$links = $dom->getElementsByTagName('a');
foreach ($links as $link){
if ($link->hasChildNodes()) {
echo $link->childNodes[0]->nodeValue;
} else {
echo $link->nodeValue;
}
}

输出显然是:

My Asked text for value 

然而,这是否有意义是值得怀疑的,使用哪个 child 的规则看起来有点模糊......


更新:

对于过时的 php 版本 < 5.6.3 你需要一个稍微修改的版本,因为类 DomNodeList 只实现了 ArrayAccess 从那个版本开始的接口(interface):

<?php
$html = '<a href="url">My Asked text for value <span class="time">15min</span></a>';

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

$links = $dom->getElementsByTagName('a');
foreach ($links as $link){
if ($link->hasChildNodes()) {
echo $link->childNodes->item(0)->nodeValue;
} else {
echo $link->nodeValue;
}
}

关于PHP, DOMElement 只获取当前节点的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449908/

74 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com