Rumah >pembangunan bahagian belakang >tutorial php >bbcode解析 [code] 的有关问题

bbcode解析 [code] 的有关问题

WBOY
WBOYasal
2016-06-13 12:09:281363semak imbas

bbcode解析 [code] 的问题

本帖最后由 sky94132003 于 2014-10-30 16:41:28 编辑 之前已问过相关的问题
版主大哥之前已初步解决了
http://bbs.csdn.net/topics/390900798

但后来发觉...如果想帮code加上一个css是不可能的

比如以下的代码
在showBBcodes()中过滤了[code]

但如果数组中加入code来显示代码, 想转义成指定的DIV...那么就会有问题了!

问题二. 如何才能一次性过滤所有function 的[code]?  比如还有 parseSmiley() 和 linkAdd()

有更智能的方法吗?  还是只能在每一个都加上?


代码补上,但因为代码中有出现[ code]  那就不用代码功能贴了抱歉

完整版代码在这:点我

class BBCode {  

    public function __construct(){}

    private function showBBcodes($text) {

         $text = htmlspecialchars($text); //编码已存在的 HTML
         preg_match_all('#\[code\](.*?)\[/code]#is', $text, $stack);

        // BBcode array
        $find = array(
            '~\[b\](.*?)\[/b\]~s',
            '~\[i\](.*?)\[/i\]~s',
            '~\[quote\](.*?)\[/quote\]~s',
            '~\[code\](.*?)\[/code\]~s'
        );

        // HTML tags to replace BBcode
        $replace = array(
            '$1',
            '$1',
            '
$1
',
            '
$1
'
        );       

         $text = nl2br(preg_replace($find,$replace,$text));
         foreach($stack[1] as $t) {
           $text = preg_replace('#\[code\].*?\[/code]#is', $t, $text,1); 
         }
         return $text;
    }


    //表情转义
    private function parseSmiley($text){
        // Smiley to image
        $smileys = array(
            ':wave:' => 'wave.gif',
            ':hahaha:' => 'hahaha.gif',
        );
        // Now you need find and replace
        foreach($smileys as $smiley => $img){
            $text = str_replace(    
                $smiley,
                "bbcode解析 [code] 的有关问题",
                $text
            );
        }
        // Now only return it
        return $text;    
    }

    //为连结自动加上A标签
    private function linkAdd($content){
        //提取替换出所有A标签(统一标记)
        preg_match_all('/.*?/i',$content,$linkList);
        $linkList=$linkList[0];
        $str=preg_replace('/.*?/i','',$content);
        //提取替换出所有的IMG标签(统一标记)
        preg_match_all('/bbcode解析 [code] 的有关问题]+>/im',$content,$imgList);
        $imgList=$imgList[0];
        $str=preg_replace('/bbcode解析 [code] 的有关问题]+>/im','',$str);
        //提取替换出所有的YOUTUBE标签(统一标记)
        preg_match_all('/
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn