highlight_string() function might be an easier route? Op 1/25/10 9:55 AM, Michael A. Peters schreef: > I'm experiencing a slight problem with importNODE putting unwanted > carriage returns in the the output. > > Here's my function: > > // syntax highlighting > include_once('Text/Highlighter.php'); > > function syntaxHighlight($dom,$lang,$code) { > $hl =& Text_Highlighter::factory($lang); > $out = $hl->highlight($code); > //die($out); > $tmpDOM = new DOMDocument('1.0','UTF-8'); > $tmpDOM->loadXML($out); > $foo = $tmpDOM->saveXML(); > //die($foo); > > $nodeList = $tmpDOM->getElementsByTagName('div'); > $impDIV = $nodeList->item(0); > $returnDIV = $dom->importNode($impDIV,true); > > return $returnDIV; > } > > -=- > > Here's my test: > > $code ="<?php" . "\n\n"; > $code .="require_once('/path/to/something');" . "\n"; > $code .="function somefunc(\$myfoo,\$mybar) {" . "\n"; > $code .=" \$myfoobar = \$myfoo . \$mybar;" . "\n"; > $code .=" return \$myfoobar;" . "\n"; > $code .=" }" . "\n"; > $code .="?>" . "\n"; > > $fooTest = syntaxHighlight($dom,'PHP',$code); > > -=- > > If I uncomment the die($out) - I get what I expect spit to the screen, > view source shows code that will do what I want. > > If instead I uncomment die($foo) - I also get what I expect spit to > screen. view source shows code that will do what I want. > > However, if the function is allowed to continue, the imported div has > carriage returns between each and every </span><span> which of course > completely breaks the browser display because they are inside a > <pre></pre> node. > > Anyone know why importNode does this and how to fix it? > > The only (untried) solution I can think of is to replace each carriage > return with a <br /> and every space with   and then replace the > <pre> with a <div class='monospace'> or some such hackery before running > loadXML() on it. But I would rather not do that. > > php 5.2.12 built against libxml 2.6.26 > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php