代码之家  ›  专栏  ›  技术社区  ›  Pete

php dom问题

  •  1
  • Pete  · 技术社区  · 17 年前

    嗨,我对这个代码有问题,我在互联网上找到它,当我测试它时,它给了我以下错误代码:

    分析错误:分析错误,第52行意外$end

    下面是脚本:

    <?php
    function walkDom($node, $level = 0)
    {
    $indent =";
    
    
    for ($i = 0; $i nodeType != XML_TEXT_NODE)
    {
             echo $indent.''.$node->nodeName.'';
    
    
              if( $node->nodeType == XML_ELEMENT_NODE )
              {
              $attributes = $node->attributes; 
    
    
                  foreach($attributes as $attribute)
                  {
                   echo ', '.$attribute->name.'='.$attribute->value;
    
                  }
              }
    
    
    if( strlen(trim($node->childNodes->item(0)->nodeValue)) > 0 && count($cNodes) == 1 ) {
    echo ".$indent.'(contains='.$node->childNodes->item(0)->nodeValue.')'; 
    }
    
    
    echo ";
    }
    
    
    
    $cNodes = $node->childNodes;
    
    if (count($cNodes) > 0)
    {
          $level++ ; 
          foreach($cNodes as $cNode) {
          walkDom($cNode, $level); 
          $level = $level – 1; 
          }
    }
    
    
    }
    
    $doc = new DOMDocument();
    $doc->loadHTMLFile('http://www.google.se');
    walkDom($doc);
    ?>
    
    3 回复  |  直到 17 年前
        1
  •  2
  •   VolkerK    17 年前

    如果您所要做的只是美化输出domdocument可以帮助您实现这一点。
    将domDocument对象设置为 "throw away" unnecessary whitespaces 并且拥有它 format the output .

    $doc = new DOMDocument;
    $doc->preserveWhiteSpace = false;
    $doc->formatOutput = true;
    $doc->loadHTMLFile('http://www.google.se');
    echo $doc->savexml();
    
        2
  •  5
  •   bobince    17 年前

    基本问题是,这是垃圾。

    看起来代码最初应该是一个格式化程序,用于以调试形式显示XML节点。但它已经被彻底破坏了。

    很明显,有字符不允许使用未终止的字符串文本,即($I=0;$I nodeType!的行!=xml_text_node)(这是无意义的,看起来像是两条不同的线连接在一起)。

    你最好说出你真正想做的和写代码,而不是在不理解它做什么的情况下在互联网上执行随机破坏的代码。

        3
  •  4
  •   Eric Petroelje    17 年前

    看起来您有一些未闭合的字符串文本。

    在这里:

    $indent =";
    

    这里:

    echo ";
    

    这些行可能是:

    $indent ="";
    

    和

    echo "";
    

    另外,这一行:

    for ($i = 0; $i nodeType != XML_TEXT_NODE)
    

    完全破碎。我不知道他们来这里干什么。他们可能是想这样做的,因为$I实际上从未用于任何事情:

    while( $node->nodeType != XML_TEXT_NODE )
    

    总的来说,如果这个代码可以工作的话,我会有点怀疑。

    推荐文章