我正在用PHP + MySQL从头开始写一个博客,在那里我有时会为教程张贴一行PHP代码等等。因此,我在我的项目中安装了GeSHi类。但是,由于我将以正常的文本格式编写博客/文章,我将编写一些教程,如:
下面是一些PHP代码: code=php /code
它将以文本格式存储在我的MySQL DB上,那么我如何设置PHP以便识别代码并使用GeSHi类来解析它呢?
发布于 2013-01-20 18:59:19
Yo可以通过简单的定期替换做到这一点。
function code($match) {
$geshi = new GeSHi($match[2], $match[1]);
return $geshi->parse_code();
}
$html = preg_replace_callback('~\[code=(.+?)\](.+?)\[\/code\]~is', 'code', $text);
发布于 2013-01-20 19:00:36
有两种方式:
最简单但更糟的:
preg_replace_callback('#\[code=([a-zA-Z]+)](.+)\[/code]#sU',function($matches){
$geshi = new GeShi($matches[1]);
return $geshi->parse($matches[2]);
},
$text );
有点困难,但相当有效率,而且很好斗:
http://php.net/manual/fr/book.bbcode.php
$bbcodeContainer = bbcode_create(array(
''=> array('type'=>BBCODE_TYPE_ROOT, 'childs'=>'!i'),
'i'=> array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<i>',
'close_tag'=>'</i>', 'childs'=>'b'),
'url'=> array('type'=>BBCODE_TYPE_OPTARG,
'open_tag'=>'<a href="{PARAM}">', 'close_tag'=>'</a>',
'default_arg'=>'{CONTENT}',
'childs'=>'b,i'),
'img'=> array('type'=>BBCODE_TYPE_NOARG,
'open_tag'=>'<img src="', 'close_tag'=>'" />',
'childs'=>''),
'b'=> array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<b>',
'close_tag'=>'</b>'),
));
bbcode_add_element($bbcodeContainer,'code',array('type'=>BBCODE_TYPE_OPTARG,
'open_tag'=>'<div class="code">','close_tag'=>'</div>',
'content_handling'=>function($content,$params){
$geshi = new GeShi($params[0]);
return $geshi->parse($content);
}));
https://stackoverflow.com/questions/14427931
复制相似问题