我正在尝试写一个BB Parser。 我的代码看起来像这样:
$string = preg_replace("/\[B\](.*)\[\/B\]/Usi", "<b>\\1</b>", $string);
$string = preg_replace("/\[I\](.*)\[\/I\]/Usi", "<i>\\1</i>", $string);
....
我想检查$ string中是否有包含noparse标记的子字符串,并跳过它将解析该子字符串的其他标记的部分。现在我不知道该怎么做。 有什么建议? 提前致谢
答案 0 :(得分:1)
试试这个,希望有所帮助
<?php
$text = bbcode( "sometext" );
print_r( $text );
function bbcode( $text = null ) {
/** Replace the bbcode tags inside [noparse] to something else **/
$text = preg_replace( '#\[noparse\](.*)\[/noparse\]#sUe', 'noparse(\'$1\')', $text );
$text = preg_replace( "(\[b\](.+?)\[\/b])is", '<strong>$1</strong>', $text );
$text = preg_replace( "(\[i\](.+?)\[\/i\])is", '<em>$1</em>', $text );
// and so on..............
/** Now restore the bbcodes tags to its original format, which we were replaced earlier **/
$text = str_replace( array( '*NoParse1*', '*NoParse2*' ), array( '[', ']' ), $text );
return $text;
}
function noparse( $text = null ) {
$text = str_replace( array( '[', ']' ), array( '*NoParse1*', '*NoParse2*' ), $text );
return $text;
}
?>