我正在使用CodeIgniter和highlight_code("$string");
(More info)函数来为动态网站提供语法突出显示。我希望用户能够提交自己的以BBCode风格格式编写的帖子。我正在使用NBBC PHP library。
我的问题是,无论我如何做到这一点,我无法让NBBC语法高亮显示我的用户输入的[code][/code]
标签。这是[代码]的PHP:
'code' => Array(
'mode' => BBCODE_MODE_ENHANCED,
'template' => "\n<div class=\"bbcode_code\">\n<p>Code:</p>\n<code><?php $highlight_code(\"?>{\$_content/v}<?php \");?></code>\n</div>\n",
'class' => 'code',
'allow_in' => Array('listitem', 'block', 'columns'),
'content' => BBCODE_VERBATIM,
'before_tag' => "sns",
'after_tag' => "sn",
'before_endtag' => "sn",
'after_endtag' => "sns",
'plain_start' => "<div id=\"footer\">",
'plain_end' => "</div>",
'simple_start' => '\n<div class=\"bbcode_code\">\n<p>Code:</p>\n<code>',
'simple_end' => '</code>\n</div>\n',
),
如果你看到我在那里打<?php $highlight_code(\"?>{\$_content/v}<?php \");?>
的行,我认为这会突出显示标签中包含的代码。我不记得这个输出是什么(我已经尝试了很多不同的组合)但是我得到的最接近的是它是从PHP导出的文本 - 在我的页面XHTML源代码中它只是作为文本出现。
我可以做些什么来制作 tags on a page be syntax-highlighted, ideally using highlight_code($string); or similar?
I was thinking
标签内的所有内容(不是[代码],请记住,但是NBBC输出的HTML)。 preg_replace
would be an option but I don't know how to do it to dynamically replace everything between outputted
答案 0 :(得分:1)
首先使用preg_match提取[code] [/ code]标签的内容,并使用highlight_code()。
使用结果以高亮显示的代码preg_replace()原始字符串中的代码区域。伪代码肥胖型:
$code = preg_match(/code pattern/, $string);
$code = highlight_code($code);
$string = preg_replace(/code pattern/, $code, $string);
希望它有效。