一個UBB的PHP類

來源:互聯網
上載者:User
關鍵字 一個UBB的PHP類

以下面是原始碼調用方法:

$u=new EncodeQ3boy();

echo $u->ubbEncode($_POST["ok"]);

/*
Text Encode Class
Write by q3boy 2003.3.10
usage:
$eq = new EncodeQ3boy($str);初始化類
//以下為ubbEncode參數
$eq->url   = true;    //啟用url自動解析  預設false
$eq->html   = true;    //啟用HTML編碼(處理<,>,全形/半形空格,定位字元,分行符號)預設true
$eq->image  = true;    //啟用圖象標籤解析 預設true
$eq->font   = true;    //啟用字型標籤解析 預設true
$eq->element = true;    //啟用外部元素解析 預設true
$eq->flash  = true;    //啟用Flash解析   預設true
$eq->php   = true;    //啟用文法高亮顯示 預設true
//ubbEncode參數結束
echo($eq->getImageOpener());//輸出圖片自動縮放所需js函數
echo $eq->htmlEncode();     //輸出ubb編碼後字串
echo"";
echo $eq->ubbEncode();      //輸出ubb編碼後字串
echo"";
echo $eq->removeHtml();     //輸出移除html標籤的字串
echo"";
echo $eq->ubbEncode();      //輸出移除ubb標籤的字串
支援ubb標籤列表:
圖片類:
  插入圖片
[limg]http://www.aaa.com/aaa.gif[/limg] 圖片左繞排
[rimg]http://www.aaa.com/aaa.gif[/rimg] 圖片右繞排
[cimg]http://www.aaa.com/aaa.gif[/cimg] 圖片置中繞排
文本控制類:
[br] 分行符號
[b]粗體字[b]
[i]斜體字[i]
[u]底線[u]
[s]刪除線[s]
[sub]文字下標[sub]
[sup]文字上標[sup]
[left]文字靠左對齊[left]
[right]文字靠右對齊[right]
[center]文字置中[center]
[align=(left|center|right)]文字對齊[align]
)]文字大小[size]
[font=(字型)[font]
[color=(文字顏色)][color]

    無序列表

        有序列表

            有序列表(列表方式為(abc,123,I II III))

                有序列表(自num開始計數)

                  [li]列表單元項[li]
                  外部元素類:
                  連結
                  連結文字
                  郵件地址
                  解說文字郵件地址
                  引用塊[/quote]
                  [iframe]插入幀地址[/iframe]
                  [iframe=(插入幀高度)]插入幀地址[/iframe]
                  [swf]flash動畫地址[/swf]
                  [swf=寬度,高度]flash動畫地址[/swf]
                  代碼塊:

                  [php][/php]
                  [code 代碼塊名稱][/code]
                  [php 代碼塊名稱][/php]
                  如需使用php文法高亮請務必在代碼塊兩端加上""標籤
                  */
                  class EncodeQ3boy {
                      var $str      = "";
                      var $iconpath   = "/image/icon";//表徵圖檔案路徑
                      var $imagepath   = "/upfiles/article";//圖片檔案預設路徑
                      var $tagfoot = ' border="1" style="cursor: hand" ';//圖片檔案附加屬性
                      var $url   = false;    //url自動解析
                      var $html  = true;        //HTML編碼
                      var $image  = true;        //解析圖象標籤
                      var $font  = true;        //字型標籤
                      var $element = true;        //外部元素
                      var $flash  = true;        //Flash
                      var $php   = true;        //文法高亮顯示
                      function EncodeQ3boy($str='',$imgph='') {
                          if($str) {
                              $str = strtr($str,array("nr"=>"n","rn"=>"n","r"=>"n"," "=>" "));
                              $this->str = $str;
                          }
                          if($imgph) $this->imagepath = $imgph;
                      }
                      function getImageOpener() {
                          Return "";
                      }
                      function removeHtml($str='') {
                          if(!$str) $str = $this->str;
                          return strip_tags($str);
                      }
                      function removeUbb($str='') {
                          if(!$str) $str = $this->str;
                          return preg_replace("/[/?w+(s+[^]s]+)*s*]/is","",$str);
                      }
                      function htmlEncode($str='') {
                          if(!$str) $str = $this->str;
                          $ary = array(
                              '<'=>'<',
                              '>'=>'>',
                              " "=>" ",
                              " "=>" "
                              );
                          $str = preg_replace("/n{2,}/s","nn",strtr($str,$ary));
                          Return str_replace("n","n
                  ",$str);
                      }
                      function ubbEncode($str='') {
                          if(!$str) $str = $this->str;
                          $rpl_ary = array();
                          $rpl_ary = array();
                          if($this->html) $str = $this->htmlEncode($str,true);
                          $tagfoot = $this->tagfoot;
                          $icon  = $this->iconpath;
                          $image  = $this->imagepath;
                          if($this->php) {
                              preg_match_all('/(n
                  )*[(php|code)s*(.*?)]s*(.+?)s*[/(php|code)](n
                  )*/is',$str,$ary);
                              $str = preg_split('/(n
                  )*[(php|code)s*(.*?)]s*(.+?)s*[/(php|code)](n
                  )*/is',$str);
                          }
                          if($this->url){
                              $reg_ary = array_merge($reg_ary,array(
                                  '/(?                '/(?            ));
                              $rpl_ary = array_merge($rpl_ary,array(
                                  '1',
                                  '1',
                              ));
                          }
                          if($this->image) {
                              $reg_ary = array_merge($reg_ary,array(
                              '//i',
                              '/[limg]s*http(s?)://(S+)s*[/limg]/i',
                              '/[rimg]s*http(s?)://(S+)s*[/rimg]/i',
                              '/[cimg]s*http(s?)://(S+)s*[/cimg]/i',
                              '/[img]s*([^/:]+)s*[/img]/i',
                              '/[limg]s*([^/:]+)s*[/limg]/i',
                              '/[rimg]s*([^/:]+)s*[/rimg]/i',
                              '/[cimg]s*([^/:]+)s*[/cimg]/i',
                              '//i',
                              '/[limg]s*(S+)s*[/limg]/i',
                              '/[rimg]s*(S+)s*[/rimg]/i',
                              '/[cimg]s*(S+)s*[/cimg]/i',
                              ));
                              $rpl_ary = array_merge($rpl_ary,array(
                              '',
                              '',
                              '',
                              '',
                              '',
                              '',
                              '',
                              '',
                              '',
                              '',
                              '',
                              '',
                              ));
                          }
                          if($this->font) {
                              $reg_ary = array_merge($reg_ary,array(
                              '/[br]/i',
                              '/s*(.+?)s*/is',
                              '/s*(.+?)s*/is',
                              '/s*(.+?)s*/is',
                              '/[s]s*(.+?)s*[/s]/is',
                              '/[sub]s*(.+?)s*[/sub]/is',
                              '/[sup]s*(.+?)s*[/sup]/is',
                              '/[left]s*(.+?)s*[/left]/is',
                              '/[right]s*(.+?)s*[/right]/is',
                              '/s*(.+?)s*/is',
                              '/[align=s*(left|center|right)]s*(.+?)s*[/align]/is',
                              '/[size=s*([.|d])s*]s*(.*?)s*/is',
                              '/[font=s*(.*?)s*]s*(.*?)s*[/font]/is',
                              '/s*(.*?)s*/is',
                              '/
                    s*(
                    )?s*(.+?)s*
                  /is',
                              '/
                    s*(
                    )?s*(.+?)s*
                  /is',
                              '/
                    s*(
                    )?s*(.+?)s*
                  /is',
                              '/
                    s*(
                    )?s*(.+?)s*
                  /is',
                              '/[li]s*(.+?)s*[/li]/is',
                              ));
                              $rpl_ary = array_merge($rpl_ary,array(
                              '
                  ',
                              '1',
                              '1',
                              '1',
                              '1',
                              '1',
                              '1',
                              '1',
                              '1',
                              '1',
                              '2',
                              '2',
                              '2',
                              '2',
                              '
                    2
                  ',
                              '
                    2
                  ',
                              '
                    3
                  ',
                              '
                    3
                  ',
                              '
                • 1
                • ',
                              ));
                          }
                          if($this->element){
                              $reg_ary = array_merge($reg_ary,array(
                              '/s*(.+?)s*/i',
                              '/s*(.+?)s*/i',
                              '/s*(.+?)s*/i',
                              '/s*(.+?)s*/i',
                              '/[quote]s*(
                  )?s*(.+?)s*

                  /is',
                              '/[iframe]s*(.+?)s*[/iframe]/is',
                              '/[iframe=s*(d+?)s*]s*(.+?)s*[/iframe]/is',
                              ));
                              $rpl_ary = array_merge($rpl_ary,array(
                              '2 ',
                              '1 ',
                              '2 ',
                              '1 ',
                              '
                  2
                  ',
                              '
                  如果你的瀏覽器不支援嵌入框,請點這裡查看',
                              '
                  如果你的瀏覽器不支援嵌入框,請點這裡查看',
                              ));
                          }
                          if($this->flash){
                              $reg_ary = array_merge($reg_ary,array(
                              '/[swf]s*(.+?)s*[/swf]/i',
                              '/[swf=(d+),(d+)]s*(.+?)s*[/swf]/i'
                              ));
                              $rpl_ary = array_merge($rpl_ary,array(
                              '',
                              ''
                              ));
                          }
                          if(sizeof($reg_ary)&&sizeof($rpl_ary))$str = preg_replace($reg_ary,$rpl_ary,$str);
                          if($this->php) {
                              $tmp = $str[0];
                              for($i=0; $i                ob_start();
                                  highlight_string(trim(strtr($ary[4][$i],array('<'=>'<','>'=>'>'," "=>" ","
                  "=>""))));
                                  $tmp .= '
                  '.(trim($ary[3][$i])?trim($ary[3][$i]):'程式碼片段:').'
                  '.ob_get_contents().'
                  '.$str[$i+1];
                                  ob_end_clean();
                              }
                              $str = $tmp;
                              unset($tmp);
                          }
                          Return $str;
                      }
                  }
                  //上面就是完整的UBB函數
                  //下面是調用方法,
                  $u=new EncodeQ3boy();
                  echo $u->ubbEncode($_POST["ok"]);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.