Более простое управление DOM созданием элементов в PHP - PullRequest
1 голос
/ 02 июня 2011

Я пытаюсь найти более простой способ создания <td> элементов и вставки в них текстовых значений.

Должен быть более простой способ, чем создание новой переменной для каждого элемента <td>,право?Возможно создание класса с некоторой абстракцией?Или, может быть, я делаю это неправильно?

При такой скорости создания 7 <td> с мне потребуется создать 7 переменных, 7 разных createTextNodes для каждой из них и еще 14 строк appendChild().

Это будет 28 строк всего за 7 <td> с.Это кажется чрезмерным для меня.Не говоря уже о том, что в таблице более одного <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();

?>

Ответы [ 3 ]

3 голосов
/ 02 июня 2011

Вы можете добавить текст к элементам напрямую:

$doc->createElement('td', 'This is title #1');

Кроме этого, не так много сокращений с точки зрения вызовов методов.DOM - это подробный API.

1 голос
/ 02 июня 2011

Петли твои друзья

$added=array();
for($i=0;$i<7;$i++) {
   $added[]= $doc->createElement('td');
   $tr1->appendChild($td1);

}
0 голосов
/ 02 июня 2011

Знаете ли вы о SimpleXML ? В частности: simplexml_load_string () , который вы можете просто передать фрагмент XML, и он преобразует его в объект:

$xml=simplexml_load_string("<an><element>This is text</element></an>");
echo $xml->element; // => This is text

Не легче, чем это. Если только вы не объедините строки и не создадите документ DOM из полученного псевдо-XML , чтобы проверить правильность его формирования, проверив возвращаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...