Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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简单HTML DOM从由$\u get项跟踪的远程页面获取数据?_Php_Dom_Simple Html Dom - Fatal编程技术网

如何使用PHP简单HTML DOM从由$\u get项跟踪的远程页面获取数据?

如何使用PHP简单HTML DOM从由$\u get项跟踪的远程页面获取数据?,php,dom,simple-html-dom,Php,Dom,Simple Html Dom,单击a.html中的链接时: <tr> <td class="book"><a class="booklink" ref="../collection?file=book1.pdf"> Good Read </a> -Blah blah blah </td> </tr> 博览群书 -废话废话 ?file=book1.pdf被传递到B.html: <?php $src = $_GET['file']; ?>

单击a.html中的链接时:

<tr>
<td class="book"><a class="booklink" ref="../collection?file=book1.pdf">
Good Read
</a>
-Blah blah blah
</td>  
</tr>

博览群书
-废话废话
?file=book1.pdf被传递到B.html:

<?php
$src = $_GET['file'];
?>

<iframe src="<?php echo $src; ?>" >
</iframe>

习惯于和


请看一看php dom。。这应该对你有帮助:)请回顾这个问题:我花了几个小时来检查你建议的链接,但它离得到答案太远了,因为这根本不是一个拼凑的工作。更多的杂草,爬得更高,伙计!当我运行代码时,它会得到链接文本。我改变了三件事使其作为一个例子运行:用实际的HTML替换了
file\u get\u contents()
(因为我没有A.HTML文件),添加了
$\u get['file']='book1.pdf'
并使用
href
更改了HTML中的
ref
属性(因为我认为这是一个打字错误),您将看到它是有效的。正如警告消息所说,这是HTML中的一个问题。这在PHP代码中并不是一个问题。您能否自行搜索警告消息以了解其含义并纠正或抑制它?使用
libxml\u使用\u内部错误(true)以防止显示错误。代码现在查找的是链接()。如果您想在示例中包含“Blah…”,这意味着您还需要它上面的HTML(元素)。将/
添加到XPath查询将像现在一样进行搜索,然后再向上搜索一个元素。我修改了我的答案以反映这一点。我尝试了$xpath->query(//td[@class='book']]/a[@href=''../collection?file={$\u GET['file']}']]/..),但仍然只有“好书”出来,“-Blah Blah Blah Blah”仍然缺失。请告诉我我做错了什么?(您的XPath仍然只搜索元素,而不搜索周围的元素。在它前面添加“td[@class=…]”只是验证元素是否存在,但它不会选择它。)
// note: if the HTML to parse has bad syntax, use: libxml_use_internal_errors(true);

$doc = new DOMDocument;
$doc->loadHTML(file_get_contents('A.html'));
if ($doc === false) {
    throw new RuntimeException('Could not load HTML');
}

$xpath = new DOMXPath($doc);
$xpathResult = $xpath->query("//a[@href = '../collection?file={$_GET['file']}']/..");
if ($xpathResult === false) {
    throw new LogicException('Something went wrong querying the document!');
}

foreach ($xpathResult as $domNode) {
    echo 'Link text: ' . htmlentities($domNode->textContent) . PHP_EOL;
}