为什么使用DOMDocument代替PHP与HTML?

时间:2014-04-26 01:40:03

标签: php html domdocument

我仍然无法真正围绕内置的DOMDocument类。

为什么我应该使用它而不是像下面这样做?

我想知道这些好处。

$URI    = $_SERVER['REQUEST_URI'];
$navArr = Config::get('navigation');

$navigation = '<ul id="nav">' . "\n";
foreach($navArr as $name => $path) {
    $navigation .= '    <li' . ((in_array($URI, $path)) ? ' class="active"' : false) . '><a href="' . $path[1] . '">' . $name . '</a></li>' . "\n";
}
$navigation .= '</ul>' . "\n\n";

return $navigation;

1 个答案:

答案 0 :(得分:2)

这是使用DOMDocument的相同示例:

$doc = new DOMDocument;

$list = $doc->appendChild($doc->createElement('ul'));
$list->setAttribute('id', 'nav');

foreach ($navArr as $name => $path) {
  $listItem = $list->appendChild($doc->createElement('li'));

  if (in_array($URI, $path)) {
    $listItem->setAttribute('class', 'active');
  }

  $link = $listItem->appendChild($doc->createElement('a'));
  $link->setAttribute('href', $path[1]);
  $link->appendChild($doc->createTextNode($name));
}

return $doc->saveHTML();

它更冗长,但不是太多,并且可能更清楚每一步发生的事情。

一个好处是角色转义:createTextNodesetAttribute确保正确转义特殊HTML字符(引号,符号和尖括号)。

最后,对于更大的应用程序,您可能希望使用实际模板语言(如Twig)来生成HTML,因为模板更具可读性和可扩展性。