我正在尝试找到一种更简单的方法来创建<td>
元素并在其中插入文本值。
必须有一种比为每个<td>
元素创建新变量更简单的方法,对吧?也许用一些抽象来创造一个类?或者我可能做错了吗?
按此速率创建7 <td>
s将要求我创建7个变量,每个变量有7个不同的createTextNodes
,另外还有14个appendChild()
行。
对于仅有7 <td>
s,这将是28行。这对我来说似乎太过分了。更不用说表中有多个<tr>
。有没有办法缩短我可以键入的行数来创建类似的东西:
<table>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
我正在做的简短示例代码:
$doc = new DOMDocument;
$table = $doc->createElement('table');
$doc->appendChild($table);
$tr1 = $doc->createElement('tr');
$table->appendChild($tr1);
$td1 = $doc->createElement('td');
$tr1->appendChild($td1);
$td1_1 = $doc->createElement('td');
$tr1->appendChild($td1_1);
$td1_2 = $doc->createElement('td');
$tr1->appendChild($td1_2);
$title1 = $doc->createTextNode('This is title #1');
$title2 = $doc->createTextNode('This is title #2');
$title3 = $doc->createTextNode('This is title #3');
$td1->appendChild($title1);
$td1_1->appendChild($title2);
$td1_2->appendChild($title3);
echo $doc->saveXML();
?>
答案 0 :(得分:3)
您可以直接将文字添加到元素中:
$doc->createElement('td', 'This is title #1');
除此之外,在方法调用方面还有很多要缩短的地方。 DOM 是一个详细的API。
答案 1 :(得分:1)
循环是你的朋友
$added=array();
for($i=0;$i<7;$i++) {
$added[]= $doc->createElement('td');
$tr1->appendChild($td1);
}
答案 2 :(得分:0)
你知道SimpleXML吗?特别是:simplexml_load_string()你可以传递一个XML片段,它会把它转换成一个对象:
$xml=simplexml_load_string("<an><element>This is text</element></an>");
echo $xml->element; // => This is text
不容易。除非您只是连接字符串和create a DOM Document from the resulting pseudo-XML以通过检查返回值来测试它是否格式正确。