2010-08-24 68 views
3

我正在使用http://softwaremaniacs.org/soft/highlight/en/來語法突出顯示HTML。我有一個PHP循環從wordpress中提取代碼。我在我的代碼中使用了pre/code標籤,以及以下循環從wordpress中提取代碼。將語法突出顯示添加到網頁(HTML/php)

<?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工作正常,但我的網頁似乎沒有我的Web服務器上。這與我動態地提取內容的方式有關嗎?我將如何完成這項工作?

+0

如果沒有看到它的實際情況,很難說出你的網站有什麼問題。你能發佈一個鏈接嗎? – s4y 2010-09-02 15:42:16

回答

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。

一個例子來自their documentation

// 
// 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

你可以使用FSHL (Fast Syntax Highlighter),它是用PHP編寫的,支持通用的語言,它可以很好的配置,風格和擴展。試一試。

動態加載的內容應該已經被服務器突出顯示,比你不需要使用JavaScript。

如果你堅持使用客戶端突出顯示,我建議使用Alex Gorbatchev的SyntaxHighlighter,它功能全面,非常受歡迎,你不需要任何額外的PHP代碼。