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 如何提取段落标记之间的链接_Php_Xpath_Domdocument - Fatal编程技术网

Php 如何提取段落标记之间的链接

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

我试图获取一个位于p标签之间的链接,但我的结果是“/playlist”,我需要像“song/54826/father friend”这样的链接。 我已经听了好几个小时了。请帮帮我

<div class="track__body">
        <p class="track__track">
            <a href="song/54826/father-friend" class="track__title" id="zwartelijst_song" data-track="">Father &amp; 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 &amp; 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 &amp; 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”)$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”)$html
位使用
var\u dump
,可以双重编码