有没有办法在每个DOM标签旁边添加行号?

时间:2012-12-30 02:53:27

标签: php dom

我的代码就是这样,它将访问所有DOM元素。现在我想在它们旁边添加行号。任何人都可以请帮助。谢谢。

<?php   
$dom = new domDocument;
// load the html into the object
$dom->loadHTMLFile('$url');
// keep white space
$dom->preserveWhiteSpace = true;
// nicely format output
$dom->formatOutput   = true;
//get element by tag name
$htmlRootElement = $dom->getElementsByTagName('html');
$new = htmlspecialchars($dom->saveHTML(), ENT_QUOTES);
echo '<pre>' .$new. '</pre>';
?>

上面的代码不会输出任何行号。我想做这样的事情。

<!DOCTYPE html>
1.<html>
2.<head>
3.    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4.   <title></title>
5.</head>
6.<body>
7.</html>

请提出任何建议。感谢。

2 个答案:

答案 0 :(得分:1)

$lines = explode(PHP_EOL, $html);

有我的提示,我相信你可以把剩下的都搞清楚了。 这个btw已有PHP库,如GeSHi

哦,你的代码有一个小错误。 在您加载HTML的位置,您执行'$url',字面意思是$url,而不是您的变量。使用双引号或根本不使用。

答案 1 :(得分:1)

只需按新行分割字符串,然后打印行号,后跟行:

$lines = preg_split( '/\r\n|\r|\n/', $new );//split the string on new lines
echo "<pre>";
foreach($lines as $lineNumber=>$line){
  echo "\r\n" . $lineNumber . ". " . $line; 
}
echo "</pre>";