虽然内置的DOM函数很棒,但由于它们旨在支持通用XML,因此生成HTML DOM变得特别冗长。我最终编写了这个函数来大幅加快速度。
无需调用类似以下内容
<?php
$div = $dom->createElement("div");
$div->setAttribute("class","MyClass");
$div->setAttribute("id","MyID");
$someOtherDiv->appendChild($div);
?>
您可以使用以下方法实现相同的功能
<?php
$div = newElement("div", $someOtherDiv, "class=MyClass;id=MyID");
?>
"key1=value;key2=value"语法使用起来非常快,但如果您的内容包含这些字符,则显然无法正常工作。因此,您也可以传递一个数组
<?php
$div = newElement("div", $someOtherDiv, array("class","MyClass"));
?>
或者是一个数组的数组,表示不同的属性
<?php
$div = newElement("form", $someOtherDiv, array(array("method","get"), array("action","/refer/?id=5");
?>
这是函数
<?php
function newElement($type, $insertInto = NULL, $params=NULL, $content="")
{
$tempEl = $this->dom->createElement($type, $content);
if(gettype($params) == "string" && strlen($params) > 0)
{
$attributesCollection =split(";", $params);
foreach($attributesCollection as $attribute)
{
$keyvalue = split("=", $attribute);
$tempEl->setAttribute($keyvalue[0], $keyvalue[1]);
}
}
if(gettype($params) == "array")
{
if(gettype($params[0]) == "array")
{
foreach($params as $attribute)
{
$tempEl->setAttribute($attribute[0], $attribute[1]);
}
} else {
$tempEl->setAttribute($params[0], $params[1]);
}
}
?>