Php 如何提取段落标记之间的链接
我试图获取一个位于p标签之间的链接,但我的结果是“/playlist”,我需要像“song/54826/father friend”这样的链接。 我已经听了好几个小时了。请帮帮我Php 如何提取段落标记之间的链接,php,xpath,domdocument,Php,Xpath,Domdocument,我试图获取一个位于p标签之间的链接,但我的结果是“/playlist”,我需要像“song/54826/father friend”这样的链接。 我已经听了好几个小时了。请帮帮我 <div class="track__body"> <p class="track__track"> <a href="song/54826/father-friend" class=&qu
<div class="track__body">
<p class="track__track">
<a href="song/54826/father-friend" class="track__title" id="zwartelijst_song" data-track="">Father & Friend</a>
<span class="track__artist" data-artist="" id="zwartelijst_artist">Alain Clark</span>
</p>
<a href="/playlist" class="track__playlist">
</a>
您需要修改xpath,使其作用域为正确的元素
$document = new DOMDocument;
$document ->loadHTML('<div class="track__body">
<p class="track__track">
<a href="song/54826/father-friend" class="track__title" id="zwartelijst_song" data-track="">Father & Friend</a>
<span class="track__artist" data-artist="" id="zwartelijst_artist">Alain Clark</span>
</p>
<a href="/playlist" class="track__playlist">
</a>');
$xPath = new DOMXPath($document );
$anchorTags = $xPath->evaluate("//div[@class=\"track__body\"]/p[@class=\"track__track\"]/a/@href");
foreach ($anchorTags as $anchorTag) {
echo $anchorTag->nodeValue;
}
$document=新文档;
$document->loadHTML('
阿兰·克拉克
');
$xPath=newdomxpath($document);
$anchorTags=$xPath->evaluate(“//div[@class=\“track\uuuuu body\”]/p[@class=\“track\uuuu track\”]/a/@href”);
foreach($anchorTags作为$anchorTag){
echo$anchorTag->nodeValue;
}
您需要修改xpath,使其作用域为正确的元素
$document = new DOMDocument;
$document ->loadHTML('<div class="track__body">
<p class="track__track">
<a href="song/54826/father-friend" class="track__title" id="zwartelijst_song" data-track="">Father & Friend</a>
<span class="track__artist" data-artist="" id="zwartelijst_artist">Alain Clark</span>
</p>
<a href="/playlist" class="track__playlist">
</a>');
$xPath = new DOMXPath($document );
$anchorTags = $xPath->evaluate("//div[@class=\"track__body\"]/p[@class=\"track__track\"]/a/@href");
foreach ($anchorTags as $anchorTag) {
echo $anchorTag->nodeValue;
}
$document=新文档;
$document->loadHTML('
阿兰·克拉克
');
$xPath=newdomxpath($document);
$anchorTags=$xPath->evaluate(“//div[@class=\“track\uuuuu body\”]/p[@class=\“track\uuuu track\”]/a/@href”);
foreach($anchorTags作为$anchorTag){
echo$anchorTag->nodeValue;
}
您要查找的链接位于
echo$links[0]中代码>因为它是它找到的第一个链接。您要查找的链接位于echo$links[0]中代码>因为这是它找到的第一个链接。这似乎不起作用。这部分:loadHTML('p class=“track_uutrack”>Alain Clark);这是您提供的代码的功能示例。您可以将其放回$document->loadHTML($html)代码>。您需要更改的唯一部分是xpath,$anchorTags=$xpath->evaluate(“//div[@class=\“track\uu body\”]/p[@class=\“track\uu track\”]/a/@href”)实际上,Nigel也是正确的,您可以使用xpath,然后也只需拉取第一个链接。不过,在今后的道路上,这似乎有点问题。我会瞄准你想要的元素。否则,您将需要迭代并确定哪一个是正确的。不幸的是,当我这样做时,没有显示您的代码必须与您提供的不同。您可以在3v4l.org链接上看到功能代码。用代码更新问题,对$html
位使用var\u dump
,可能是双重编码,但似乎不起作用。这部分:loadHTML('p class=“track_uutrack”>Alain Clark);这是您提供的代码的功能示例。您可以将其放回$document->loadHTML($html)代码>。您需要更改的唯一部分是xpath,$anchorTags=$xpath->evaluate(“//div[@class=\“track\uu body\”]/p[@class=\“track\uu track\”]/a/@href”)实际上,Nigel也是正确的,您可以使用xpath,然后也只需拉取第一个链接。不过,在今后的道路上,这似乎有点问题。我会瞄准你想要的元素。否则,您将需要迭代并确定哪一个是正确的。不幸的是,当我这样做时,没有显示您的代码必须与您提供的不同。您可以在3v4l.org链接上看到功能代码。用代码更新问题,对$html
位使用var\u dump
,可以双重编码