Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php或javascript库对php代码和突出显示的源代码进行编码_Php_Regex_Syntax Highlighting_Bbcode - Fatal编程技术网

使用php或javascript库对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

我有一个定制的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="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
);