使用php或javascript库对php代码和突出显示的源代码进行编码
我有一个定制的php网站,我想在这里发布php代码片段,但我想突出显示我的源代码。我尝试通过纯php使用使用php或javascript库对php代码和突出显示的源代码进行编码,php,regex,syntax-highlighting,bbcode,Php,Regex,Syntax Highlighting,Bbcode,我有一个定制的php网站,我想在这里发布php代码片段,但我想突出显示我的源代码。我尝试通过纯php使用Geshi(),但这不是我想要的,所以我对其他库感兴趣,比如googlecode Prettify(),但我不知道如何使用这个javascript库 <link rel="stylesheet" type="text/css" media="all" href="gcp/prettify.css"> <script src="gcp/prettify.js" type="te
Geshi
(),但这不是我想要的,所以我对其他库感兴趣,比如googlecode Prettify
(),但我不知道如何使用这个javascript库
<link rel="stylesheet" type="text/css" media="all" href="gcp/prettify.css">
<script src="gcp/prettify.js" type="text/javascript"></script>
<body onload="prettyPrint()">
$body = preg_replace('#\[code\](.*)\[/code\]#isU', '<div class="code"><span class="xcode"><code class="prettyprint">\1</code></span></div>', $body);
$body=preg\u replace(“\[code\]”(.*)\[/code\]\isU',“\1
”,$body);
我是否正确使用了谷歌代码美化
另一个问题,我是否在bbcode
中使用了正确的正则表达式
感谢您的帮助
一个更好的函数用于此,因为您可以将匹配的文本传递给回调函数以重新格式化
下面是一个示例实现:(这可能需要一些调整,但您应该了解这一点)
功能代码\u标签\u替换($matches){
$ret='';
$ret.=SyntaxHighlight::process($matches[1]);
$ret.='';
返回$ret;
}
$body=preg\u replace\u回调(
“#\[code\](.*)\[/code\]#isU”,
“代码标记替换”,
$body
);
堆栈溢出用于语法突出显示。您可能会发现它比您尝试的PHP解决方案更易于使用。太棒了!!!我按照你的建议解决了我的问题!!!在PHP5.3下,操作码153/1/8无效。在函数($matches){在PHP5.4错误加载页面下…preg_replace_callback make crash apache&php…在PHP5.4下…AeroX你能更好地解释一下你的意思吗?请尝试给我一些例子,如果你能的话…函数space2nbsp($matches){$s=$matches[0];返回stru repeat(“”,strlen($s));}$body=preg_replace_回调('/\s{2,}/','space2nbsp',$body);在我的php配置中,preg_replace_callback必须在之后调用,首先必须执行函数…这是我用于发布的php文件中的另一个示例…@user3584233我相信我给出的示例现在应该适用于您。您的php版本似乎不支持。我还将$matches[0]
更改为$matches[1]
只应将第一个子模式传递给SyntaxHighlight
,而不是整个匹配。
function code_tag_replace( $matches ) {
$ret = '<TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="10" CLASS="code" BORDER="0"><TR><TD><SPAN CLASS="xcode">';
$ret .= SyntaxHighlight::process( $matches[1] );
$ret .= '</SPAN></TD></TR></TABLE>';
return $ret;
}
$body = preg_replace_callback(
'#\[code\](.*)\[/code\]#isU',
'code_tag_replace',
$body
);