这是从sablog取得的一段加亮代码,调用了php系统函数highlight_string,然后将内容中的一些东西做了替换,来测试一下
下面是语法加亮函数
- // 高亮显示PHP
- function phphighlight($code) {
- if (floor(phpversion())<4) {
- $buffer = $code;
- } else {
- $code = preg_replace("/<style .*?<\/style>/is", "", $code);
- $code = preg_replace("/<script .*?<\/script>/is", "", $code);
- $code = preg_replace("/<br\s*\/?>/i", "\n", $code);
- $code = preg_replace("/<\/?p>/i", "\n", $code);
- $code = preg_replace("/<\/?td>/i", "\n", $code);
- $code = preg_replace("/<\/?div>/i", "\n", $code);
- $code = preg_replace("/<\/?blockquote>/i", "\n", $code);
- $code = preg_replace("/<\/?li>/i", "\n", $code);
- $code = strip_tags($code);
- $code = preg_replace("/\&\#.*?\;/i", "", $code);
- $code = str_replace(" ", " ", $code);
- $code = str_replace(" ", " ", $code);
- $code = str_replace(" ", "\t", $code);
- $code = str_replace(""", '"', $code);
- $code = str_replace("<br>", "", $code);
- $code = str_replace("
- ", "", $code);
- $code = str_replace(">", ">", $code);
- $code = str_replace("<", "<", $code);
- $code = str_replace("&", "&", $code);
- //$code = str_replace('$', '$', $code);
- if (!strpos($code,"<?\n") and substr($code,0,4)!="<?\n") {
- $code="<?".trim($code)."?>";
- $addedtags=1;
- }
- ob_start();
- $oldlevel=error_reporting(0);
- highlight_string($code);
- error_reporting($oldlevel);
- $buffer = ob_get_contents();
- ob_end_clean();
- if ($addedtags) {
- $openingpos = strpos($buffer,"<?");
- $closingpos = strrpos($buffer, "?");
- $buffer=substr($buffer, 0, $openingpos).substr($buffer, $openingpos+5, $closingpos-($openingpos+5)).substr($buffer, $closingpos+5);
- }
- $buffer = str_replace(""", "\"", $buffer);
- }
- return $buffer;
- }
前台调用的时候用正则替换 与 之间的内容
$blogdata['Words'] = preg_replace("/\s*\[php\](.+?)\[\/php\]\s*/ies", "phphighlight('')", $blogdata['Words']);

