为网页(HTML/PHP)添加语法高亮

3
我正在使用http://softwaremaniacs.org/soft/highlight/en/来对HTML进行语法高亮。我有一个PHP循环从WordPress中提取代码。我在我的代码中使用
标签,并使用以下循环从WordPress中提取代码。
<?php while (have_posts()) : the_post(); ?>
<p><i><?php the_date(); echo "<br />"; ?> </p></i>
<h2><?php the_title(); ?></h2>    
<p><?php the_content(); ?></p>
<?php endwhile;?>

在我的php页面顶部,我有一个导入语句...
<script type="text/javascript" src="highlight.pack.js"></script>
<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>

测试页面上的test.html文件运行良好,但我的网站在网络服务器上似乎无法正常工作。这是否与我动态获取内容的方式有关?我该如何解决这个问题?


没有看到网站实际运行,很难判断出现了什么问题。你能发一个链接吗? - s4y
5个回答

8

从源代码中

function initHighlightingOnLoad() {
    var original_arguments = arguments;
    var handler = function(){initHighlighting.apply(null, original_arguments)};
    if (window.addEventListener) {
      window.addEventListener('DOMContentLoaded', handler, false);
      window.addEventListener('load', handler, false);
    } else if (window.attachEvent)
        window.attachEvent('onload', handler);
    else
        window.onload = handler;
}

这将只会起作用一次,但是

你可以通过欺骗插件来再次调用该方法

hljs.initHighlighting.called = false;
hljs.initHighlighting();

我已在演示页面上进行了测试,似乎效果非常好。

因此,在您向页面插入新元素后,可能需要调用这两行代码。


3
一种可能的替代方法:使用GeSHi在PHP中进行语法高亮显示。 以下是来自他们文档的示例:
//
// Include the GeSHi library//
include_once 'geshi.php'; 
//// Define some source to highlight, a language to use
// and the path to the language files//
$source = '$foo = 45;
for ( $i = 1; $i < $foo; $i++ ){
  echo "$foo\n";  --$foo;
}';$language = 'php';
 //
// Create a GeSHi object//
 $geshi = new GeSHi($source, $language);
 //
// And echo the result!//
echo $geshi->parse_code();

0

0

你可以使用FSHL (Fast Syntax Highlighter),它是用PHP编写的,支持常见语言,可以很好地配置、样式化和扩展。试试看。

动态加载的内容应该已经被服务器高亮显示了,那么你就不需要使用JavaScript。

如果你坚持要使用客户端高亮显示,我建议使用Alex Gorbatchev的SyntaxHighlighter,它功能齐全,非常受欢迎,你不需要任何额外的PHP代码。


0

就像我说的一样。我正在从WordPress中提取代码到HTML/PHP网页中。并不是在WordPress内操作。这与此无关。-1 - Skizit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接