简单的HTML DOM解析器 - 获取路径

时间:2012-10-13 17:58:10

标签: php dom

我正在慢慢尝试使用Simple HTML DOM Parser从页面中提取一些html并将html代码插入当前页面。 (我是一个PHP新手)

在示例中,一个人只会像c.html一样输入页面名称。我需要php来查看当前页面:div navbar一个href结束w / $ pg,当它发现需要获得完整的href所以我有路径,所以它可以用来转到那个页面并拉一些指定的div。

到目前为止我有这个,但路径没有回应:

<?php
include_once '%resource(simple_html_dom.php)%';
$pg = 'c.html';
echo 'Page: ' . $pg . '<br />';  // Works
$html = file_get_html();  // needs to look in current pg
foreach($html->find('#navbar a[href$=$pg]') as $path) // Doesn't work
  echo 'Path: ' . $path;
$html = file_get_html($path);
foreach($html->find('#testdiv2') as $ret)
  echo $ret;
?>

感谢您的帮助。

更新的代码:

<?php
include_once 'path/to/resource/simple_html_dom.php';
$pg = 'c.html';
echo 'Page: ' . $pg . '<br />';
function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT)
foreach($html->find(sprintf('#navbar a[href=%s]',$pg)) as $path)
  echo 'Path: ' . $path;
$html = file_get_html($path);
foreach($html->find('#testdiv2') as $ret)
  echo $ret;
?>
  • 包含一次行是一种特殊的插件格式 - 我将其更改为显示文件的示例路径 - 应该可以通过php读取,对吧?

  • 在定义函数file_get_html时(记得我使用的是简单的HTML DOM解析器):如何为当前页面定义$ url? (我需要自动定义) %s是否意味着'以'结尾'? (我在我看过的文档中没有看到这一点)

  • 我是否需要在第一个foreach中调用该函数或者为该函数分配$ html? (它是否需要括号或结尾;?)

  • 对于第二个foreach,如果$ html被重新定义,那么它会运行正常吗?

你可以向@Baba解释这些,因为这对我来说都是新的:)

1 个答案:

答案 0 :(得分:1)

以下不是包含文件的有效方法

include_once '%resource(simple_html_dom.php)%';

应该是

include_once __DIR__.'/simple_html_dom.php';

file_get_html期望至少有一个参数$url

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT)

我也想相信你的发现应该看起来像这样

foreach($html->find(sprintf('#navbar a[href=%s]',$pg)) as $path)