Home  >  Article  >  Backend Development  >  bbcode解析 [code] 的有关问题

bbcode解析 [code] 的有关问题

WBOY
WBOYOriginal
2016-06-13 12:09:281338browse

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('/
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn