[英]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函数来突出显示:
您可以使用FSHL(快速语法荧光笔) ,它是用PHP编写的,支持常用语言,可以很好地配置,设置样式和扩展。 试试看。
动态加载的内容应该已经被服务器突出显示,而不是您不需要使用JavaScript。
如果你坚持使用客户端突出显示,我建议使用Alex Gorbatchev的SyntaxHighlighter ,它功能齐全,非常受欢迎,你不需要任何额外的PHP代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.