繁体   English   中英

将语法高亮添加到网页(HTML / php)

[英]adding Syntax highlighting to webpages (HTML/php)

我正在使用http://softwaremaniacs.org/soft/highlight/en/来语法突出显示HTML。 我有一个php循环从wordpress拉代码。 我在我的代码和以下循环中使用pre / code标签从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工作正常,但我的网页似乎不在我的网络服务器上。 这与我动态提取内容的方式有关吗? 我怎么做这个工作?

从源代码

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();

我在演示页面上测试了它,似乎工作得很好。

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

一种可能的替代方法:使用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();

有很多语法突出显示WordPress的插件。 例如: http//kpumuk.info/projects/wordpress-plugins/codecolorer/examples/

检查是否从服务器上加载了javascript。

你还应该看一下原生的php函数来突出显示:

http://php.net/manual/en/function.highlight-string.php

您可以使用FSHL(快速语法荧光笔) ,它是用PHP编写的,支持常用语言,可以很好地配置,设置样式和扩展。 试试看。

动态加载的内容应该已经被服务器突出显示,而不是您不需要使用JavaScript。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM