嗯..我自己创建了一个博客,我为我的“POSTS”创建了一个preg_replace然后输入:
[code="php"]foobar[!code]
他打印
<script type="syntaxhighlighter" class="brush: $1; html-script: true"><![CDATA[ foobar ]]></script>
这个preg_replace:
运行正常/\[code="(.*?)"\]/
(对于前缀)
/\[!code\]/
(对于sufix)
但是现在我想添加一个额外的选项,但检查用户是否已经打字...想法是这样的:
[code="php" [1,3]]
foo
[!code]
返回:
<script type="syntaxhighlighter" class="brush: $1; highlight: [1,3]; html-script: true">...
否则如果没有$ 2(用户只键入[code =“php”])则返回:
<script type="syntaxhighlighter" class="brush: $1; html-script: true">
如何在同一preg_replace中创建此语句?提前谢谢,并为不良的英语而烦恼。
修改
我已经使用* preg_replace_callback *
实现了我的解决方案答案 0 :(得分:1)
您需要使用preg_replace_callback来执行您想要的操作:
function format_prefix($matches)
{
return '<script type="syntaxhighlighter" class="brush: '
. $matches[1]
. (isset($matches[2]) ? '; highlight: ' . $matches[2] : '')
. '; html-script: true">';
}
$s = '[code="php"]foobar[!code]'."\n".'[code="php" [1,3]]foobar[!code]';
echo preg_replace_callback('/\[code="(.*?)"(?:\s+(\[\d+,\d+\]))?\]/', 'format_prefix', $s);