PHP获取当前页面特定内容

时间:2012-11-06 18:33:03

标签: php dom

我试图找出它是否可能&使用什么代码:加载当前页面的内容,并使用PHP或PHP Simple Html DOM Parser.

回显出“#navbar a”中特定页面(c.html)的相对路径

到目前为止我的代码:

<?php
$pg = 'c.html';
include_once '%resource(simple_html_dom.php)%';
/* $cpath = $_SERVER['REQUEST_URI']; Old version */  // Path to current pg from root
$cpath = "http://www.".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
echo var_dump($cpath).": Current Root Path"."<br />";  // "http://www.partiproductions.com/copyr/index.php" - Correct
$cfile = basename($cpath);
echo 'Current File: ' . $cfile . "<br />"; // "index.php" - Current pg, Correct

$html = file_get_html($cpath); // Getting Warning: URL file-access is disabled in the server configuration & failed to open stream: no suitable wrapper could be found in.. & Fatal error: Call to a member function find() on a non-object in...
foreach($html->find(sprintf('#navbar a[href=%s]', $pg)) as $path) {
  echo 'Path: ' . $path."<br />";
}
?>

2 个答案:

答案 0 :(得分:1)

您遇到的主要问题是调用file_get_html($ cfile)。

您的示例中的 $ cfile将包含类似/copyr/index.php

的内容

当你将它传递给file_get_html()时,它将在服务器的根目录中查找目录/ copyr,并在其中查找index.php文件。根据您已指明的警告,您实际上并未在服务器的根目录中拥有此文件夹结构。

您实际需要做的是在您当前拥有的URI前面加上完整的网址,例如:

$cpath = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

这将产生如下路径:http://www.yourserver.com/copyr/index.php您应该为file_get_html()工作;

答案 1 :(得分:0)

根据提问者的最新信息,我会采用不同的方法。

创建一个新文件,其中仅包含您希望在两个文件之间共享的内容。然后,在两个文件中(或稍后,如果需要)使用include()函数从新共享内容文件中注入内容。

index.php文件:

<?php
//Any require PHP code goes here
?>
<html>
    <body>
    <?php include('sharedfile.php');?>
    </body>
</html>

/copyr/c.php文件:

<?php
//Any require PHP code goes here
?>
<html>
    <body>
    <?php include('../sharedfile.php');?>
    </body>
</html>

<强> sharedfile.php:

// You need to close the PHP tag before echoing HTML content
?>
<p>
    This content is displayed via include() both on index.php and /copyr/c.php
</p>
<?php  // The PHP tag needs to be re-opened at the end of your shared file

这里的好处是,您现在可以通过遵循相同的技术在您的站点中的任何文件中使用sharedfile.php文件内容。您也不需要解析页面的DOM来删除要在多个页面上显示的内容,这可能很慢且容易出错。