php用DOM提取一段html并插入新的html

时间:2016-01-19 19:22:36

标签: php

我想要的是使用html代码段作为带占位符的模板并加载此模板,填充内容并返回新的html:

this

问题是孩子们的实体和错误的位置 - 任何人都可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

这是另一种方法:

$html = '<table><tr id="myselector"></tr></table>';

$doc = new DOMDocument();
$doc->loadHTML($html);
$tr = $doc->getElementById('myselector');

foreach ($data as $row) {
    $td = $doc->createElement('td', $row['value']);
    $tr->appendChild($td);
    //repeat as necessary
}

它不使用占位符,但它应该产生所需的结果。

如果目标是从头开始创建更复杂的模板系统,那么仔细阅读XPath documentation并利用相关的XPath class可能会更有意义。

答案 1 :(得分:1)

假设你有一个这样的数据映射数组:

$data = array(
    'PLACEHOLDER1' => 'data 1',
    'PLACEHOLDER2' => 'data 2',
);

以下是您可以做的事情:

$html = '<table>
<tr id="myselector">
    <td>###PLACEHOLDER1###</td>
    <td>###PLACEHOLDER2###</td>
</tr>
</table>';

foreach( array_keys( $data ) as $key )
{
    $html = str_replace( '###'.$key.'###', $data[ $key ], $html );
}

答案 2 :(得分:0)

我想知道你为什么要使用PHP代替JQuery - 这使得SUPER变得简单。我的意思是,我知道你可以,但我不确定你是否在为自己做任何好事。

我有类似的要求,我想使用模板并获取服务器端值。我最终做的是创建一个服务器端数组并将其转换为JSON - 在php f

然后我有一个模板的常备脚本部分,它使用jQuery选择器来获取和设置值。这非常干净,并且更容易调试,试图从php生成整个HTML有效负载。这也意味着我可以更轻松地将数据文件与模板分开,以便以后更好地进行缓存和更新。

如果您不熟悉jQuery并需要一些指导,我可以尝试使用fiddler示例来更新它。请告诉我。