Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用SimpleXML填充HTML文件_Php - Fatal编程技术网

Php 使用SimpleXML填充HTML文件

Php 使用SimpleXML填充HTML文件,php,Php,我有一个数组,其中包含以下内容: $content = array( array( 'classname' => 'nopadding', 'idname' => 'car-volvo', 'title' => 'Volvo' ), array( 'classname' => 'nomargin',

我有一个数组,其中包含以下内容:

    $content = array(
        array(
            'classname' => 'nopadding',
            'idname'    => 'car-volvo',
            'title' => 'Volvo'
        ),
        array(
            'classname' => 'nomargin',
            'idname'    => 'car-porsche',
            'title' => 'Porsche'
        )
    );
我有一个HTML文件,用作包含以下内容的模板:

    <li data-tpl-classname="class" data-tpl-idname="id"><span data-tpl-title="innerHTML"></span></li>

现在,我想将数组与HTML文件一起使用以生成以下内容:

    <li class="nopadding" id="car-volvo"><span>Volvo</span></li>
    <li class="nopadding" id="car-volvo"><span>Volvo</span></li>
沃尔沃 沃尔沃 我希望编写一个通用函数,该函数接受上面的HTML文件,查找
数据tpl-
属性,并用数组中的内容填充


我怎样才能做到这一点?SimpleXML是一种可行的方法吗?

我已经尝试将其尽可能概括,但不能保证它适用于所有模板,我需要查看一下它们的通用模式

您可以尝试以下代码:

populate_html($template,$content,'li','data-tpl-');

function populate_html($template,$content,$tag_name,$attr_name){
    $dom = new DOMDocument;
    $dom->loadHTML($template);
    $i=0;
    $tag = $dom->getElementsByTagName($tag_name)->item(0);
    foreach($content as $k=>$v){

        $li = "<".$tag_name;
        foreach ($tag->attributes as $attr) {
            if(stripos($template,$attr_name)!==FALSE){
                $attr_short = substr($attr->nodeName,strrpos($attr->nodeName,'-')+1,strlen($attr->nodeName));
                $li .= ' '.$attr->nodeValue.'="'.$content[$i][$attr_short].'"';
            }
        }
        $li .= "><span>".$content[$i]['title']."</span></".$tag_name.">";
        $i++;
        echo $li;
    }
}
populate_html($template,$content,'li','data-tpl-');
函数填充html($template、$content、$tag\u name、$attr\u name){
$dom=新的DOMDocument;
$dom->loadHTML($template);
$i=0;
$tag=$dom->getElementsByTagName($tag\u name)->项(0);
foreach($k=>v的内容){
$li=“”.$content[$i]['title']。”;
$i++;
李元;
}
}
是一个类,它会将包含HTML的字符串分解为属性和值,以便通过它们进行解析


您需要从模板HTML文件中获得什么?你不能只使用数组和你的
  • 输出吗?模板文件告诉我把内容放在哪里。它要么在属性中,要么是元素的innerHTML内容。我的观点是,数组中的所有数据都可以用来构造
  • 属性和值。那么,您是否需要模板文件中的任何内容?是的。因为模板文件只是一个例子。我有许多其他具有不同元素、属性和结构的模板文件。我正在尝试编写一个通用的填充模板函数,不管模板文件看起来如何。