我想要的是使用html代码段作为带占位符的模板并加载此模板,填充内容并返回新的html:
this
问题是孩子们的实体和错误的位置 - 任何人都可以解决这个问题吗?
答案 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示例来更新它。请告诉我。