我正在尝试使用Simple HTML DOM Parser从页面B中提取一些html并将html代码插入当前页面。 (请温柔,我是一个PHP新手)
Page B html我的目标看起来像这样:
<div id="testdiv">B</div>
我需要在当前页面中插入相同的代码。
我的PHP在当前页面:
<?php
include_once '%resource(simple_html_dom.php)%';
$ret = Array();
$html = file_get_html('b.html');
$ret[] = $html->find('div[id=testdiv]', 0);
$ret->outertext = $ret->makeup() . $ret->innertext . '</div>';
echo $ret;
?>
我试图将它拼凑在一起,但仍然没有运气。我希望在查看当前页面时看到“B”,但我绝对需要所有的html编码也在那里;)
目前收到错误“在非对象上调用成员函数化妆()”
P.S。一旦运行,我可能需要一种方法来引入pg B上的css和js。
感谢你的帮助,比尔
更新代码:
<?php
include_once '%resource(simple_html_dom.php)%';
$html = file_get_html('b.html');
foreach($html->find('div[id=testdiv]') as $ret)
echo $ret;
?>
所以现在我需要能够获得特定的css&amp;来自页面B的js文件,因此div中的任何内容都将正确呈现。这是一个例子Current Page如果您查看页面B的标题,将会有一个典型的css和js文件,名为b_files / stacks_page_page1.css&amp; b_files / stacks_page_page1.js
这些是我需要在当前页面中引用的文件,并根据需要更改相对路径。我还添加了一个文件夹中的页面C(B在根目录中是当前页面),因此路径会有所不同。我想将css文件组合在一起&amp; js文件在一起会很好,所以没有一堆dom调用。
总的来说,带来这些文件的代码是什么?
答案 0 :(得分:1)
你正在获得“对非对象调用成员函数化妆()”,因为$ ret是一个数组而且没有一个名为“makeup()”的方法。
我不确定你想要做什么,但是这样的事情可能会让你更接近。我假设你有一些名为makeup()的函数产生一个字符串“&lt; div&gt;”:
未经测试
<?
php include_once '%resource(simple_html_dom.php)%';
$html = file_get_html('b.html');
$ret = $html->find('div[id=testdiv]', 0)->innertext;
$ret = makeup() . $ret . '</div>';
echo $ret;
?>
答案 1 :(得分:1)
代码存在许多问题。 $ret[]
表示按下数组,但接下来就是调用对象方法的行,这就是你得到错误的原因。
修复该问题后,$ret->makeup
不是根据API的有效方法(除非您已修改/扩展它)。我不确定您对$ret->outertext = $ret->makeup() . $ret->innertext . '</div>'
的看法,但是如果您在输出中期望B
:
<?php
include_once 'simple_html_dom.php';
$html = file_get_html('b.html');
$ret = $html->find('div[id=testdiv]', 0);
if ($ret) {
echo $ret->innertext;
}
答案 2 :(得分:1)
foreach($html->find('div[id=testdiv]') as $content)
echo $content;
结果应为<div id="testdiv">B</div>
它将作为
B
如果要显示代码:
foreach($html->find('div[id=testdiv]') as $content)
echo "<xmp>".$content."</xmp>";
真实结果:<xmp><div id="testdiv">B</div></xmp>
然后在浏览器的显示屏上显示:
<div id="testdiv">B</div>