0

PHP + MySQL でゼロからブログを作成しており、チュートリアル用の PHP コードの行を投稿することもあります... そこで、プロジェクトに GeSHi クラスをインストールしました。しかし、私はブログ/記事を通常のテキスト形式で書くので、次のようなチュートリアルをいくつか書きます:

Here is some PHP code:
[code=php]
<?php
echo 'Hello World!';
?>
[/code]

そして、これは MySQL DB に TEXT 形式で保存されるので、コードを認識し、GeSHi クラスを使用して解析するように PHP を設定するにはどうすればよいでしょうか?

4

2 に答える 2

1

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-20T18:59:19.053 に答える
1

2 つの方法があります。

最も単純だが悪い:

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);   
            }));
于 2013-01-20T19:00:36.893 に答える