• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    ubbcode類

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網 <?
    //ubbcode類
      class ubbcode{
      var $call_time=0;
      //可處理標簽及處理函數對應表
      var $tags = array( //小寫的標簽 => 對應的處理函數
      'url' => '$this->url',
      'email' => '$this->email',
      'img' => '$this->img',
    'flash' => '$this->flash',
    'sound' => '$this->sound',

    'black' => '$this->font_color',
    'white' => '$this->font_color',
    'red' => '$this->font_color',
    'pink' => '$this->font_color',
    'blue' => '$this->font_color',
    'green' => '$this->font_color',
    'olive' => '$this->font_color',
    'navy' => '$this->font_color',
    'gray'=> '$this->font_color',
    'fuchsia' => '$this->font_color',
    'yellow' => '$this->font_color',
    'silver' => '$this->font_color',
    'purple' => '$this->font_color',

    'marquee' => '$this->simple',
      'b' => '$this->simple',
      'i' => '$this->simple',
      'u' => '$this->simple',
      'tt' => '$this->simple',
      's' => '$this->simple',
      'strike' => '$this->simple',
      'h1' => '$this->simple',
      'h2' => '$this->simple',
      'h3' => '$this->simple',
      'h4' => '$this->simple',
      'h5' => '$this->simple',
      'h6' => '$this->simple',
      'sup' => '$this->simple',
      'sub' => '$this->simple',
      'em' => '$this->simple',
      'strong' => '$this->simple',
      'code' => '$this->simple',
      'samp' => '$this->simple',
      'kbd' => '$this->simple',
      'var' => '$this->simple',
      'dfn' => '$this->simple',
      'cite' => '$this->simple',
      'small' => '$this->simple',
      'big' => '$this->simple',
      'blink' => '$this->simple'
      );
      //url褳接屬性
      var $attr_url;
      //url合法性檢查對象
      var $urlcheck;
       
      function ubbcode($attr_url){
      $this->attr_url = ''.$attr_url;
      $this->urlcheck = new urlcheck();
      }
       
      //對$str進行UBB編碼解析
      function parse($str){
      $this->call_time++;
      $parse = ''.htmlencode($str);
       
      $ret = '';
      while(true){
      $eregi_ret=eregi("\[[#]{0,1}[[:alnum:]]{1,7}\]",$parse,$eregi_arr); //查找[xx]
      if(!$eregi_ret){
      $ret .= $parse;
      break; //如果沒有,返回
      }
      $pos = @strpos($parse,$eregi_arr[0]);
      $tag_len=strlen($eregi_arr[0])-2;//標記長度
      $tag_start=substr($eregi_arr[0],1,$tag_len);
      $tag=strtolower($tag_start);
       
      if((($tag=="url") or ($tag=="email") or ($tag=="img") or ($tag=="flash")) and ($this->call_time>1)){
      echo $this->call_time."<br>";
      return $parse;//如果不能是不能嵌套的標記,直接返回
      }
       
      $parse2 = substr($parse,0,$pos);//標記之前
      $parse = substr($parse,$pos+$tag_len+2);//標記之后
      if(!isset($this->tags[$tag])){
      echo "$tag_start<br>";
      $ret .= $parse2.'['.$tag_start.']';
      continue;//如果是不支持的標記
      }
       
      //查找對對應的結束標記
      $eregi_ret=eregi("\[\/".$tag."\]",$parse,$eregi_arr);
      if(!$eregi_ret){
      $ret .= $parse2.'['.$tag_start.']';
      continue;//如果沒有對應該的結束標記
      }
      $pos=strpos($parse,$eregi_arr[0]);
      $value=substr($parse,0,$pos);//這是起止標記之間的內容
      $tag_end=substr($parse,$pos+2,$tag_len);
      $parse=substr($parse,$pos+$tag_len+3);//結束標記之后的內容
       
      if(($tag!="url") and ($tag!="email") and ($tag!="img")and ($tag!="flash")){
      $value=$this->parse($value);
      }
       
      $ret .= $parse2;
      eval('$ret .= '.$this->tags[$tag].'("'.$tag_start.'","'.$tag_end.'","'.$value.'");');
      }
      $this->call_time--;
      return $ret;
      }
       
      function simple($start,$end,$value){
      return '<'.$start.'>'.$value.'</'.$end.'>';
      }
       
      function url($start,$end,$value){
      $trim_value=trim($value);
      if (strtolower(substr($trim_value,0,7))!="http://")
      $trim_value="http://".$trim_value;
      if($this->urlcheck->check($trim_value)) return '<a href="'.$trim_value.'" '.$this->attr_url.'>'.$value.'</a>';
      else return '['.$start.']'.$value.'[/'.$end.']';
      }
       
      function email($start,$end,$value){
      if(emailcheck($value)) return '<a href="mailto:'.$value.'">'.$value.'</a>';
      else return '['.$start.']'.$value.'[/'.$end.']';
      }
       
      function img($start,$end,$value){
      $trim_value=trim($value);
      if ((strtolower(substr($trim_value,0,7))!="http://") or ($this->urlcheck->check($trim_value)))
      return '<img src="'.$trim_value.'"></img>';
      else return '['.$start.']'.$value.'[/'.$end.']';
      }

      function flash($start,$end,$value){
      $trim_value=trim($value);
      if ((strtolower(substr($trim_value,0,7))!="http://") or ($this->urlcheck->check($trim_value)))

    return '<embed src='.$trim_value.' quality=high pluginspage=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash type=application/x-shockwave-flash width=520 height=360>';

      else return '['.$start.']'.$value.'[/'.$end.']';
      }

    function sound($start,$end,$value){
      $trim_value=trim($value);
      if ((strtolower(substr($trim_value,0,7))!="http://") or ($this->urlcheck->check($trim_value)))

    return "<embed src=".$trim_value." hidden autostart=true loop=true>";

      else return '['.$start.']'.$value.'[/'.$end.']';
      }

    function font_color($start,$end,$value){
    if(strstr("black|white|red|pink|blue|green|olive|navy|gray|fuchsia|yellow|silver|purple",$start))
    return "<font color=".$start.">".$value."</font>";
    else return '['.$start.']'.$value.'[/'.$end.']';
      }
      }
       
    //urlcheck.php
      class urlcheck{
      var $regex = array(//協議名(注意在這里必須寫成小寫) => 對應的正則表達式
      'ftp' => '$this->ftpurl',
      'file' => '$this->fileurl',
      'http' => '$this->httpurl',
      'https' => '$this->httpurl',
      'gopher' => '$this->gopherurl',
      'news' => '$this->newsurl',
      'nntp' => '$this->nntpurl',
      'te.net' => '$this->telneturl',
      'wais' => '$this->waisurl'
      );
       
      var $lowalpha;
      var $hialpha;
      var $alpha;
      var $digit;
      var $safe;
      var $extra;
      var $national;
      var $punctuation;
      var $reserved;
      var $hex;
      var $escape;
      var $unreserved;
      var $uchar;
      var $xchar;
      var $digits;
       
      var $urlpath;
      var $password;
      var $user;
      var $port;
      var $hostnumber;
      var $alphadigit;
      var $toplabel;
      var $domainlabel;
      var $hostname;
      var $host;
      var $hostport;
      var $login;
       
      //ftp
      var $ftptype;
      var $fsegment;
      var $fpath;
      var $ftpurl;
       
      //file
      var $fileurl;
       
      //http,https
      var $search;
      var $hsegment;
      var $hpath;
      var $httpurl;
       
      //gopher
      var $gopher_string;
      var $selector;
      var $gtype;
      var $gopherurl;
       
      //news
      var $article;
      var $group;
      var $grouppart;
      var $newsurl;
       
      //nntp
      var $nntpurl;
       
      //telnet
      var $telneturl;
       
      //wais
      var $wpath;
      var $wtype;
      var $database;
      var $waisdoc;
      var $waisindex;
      var $waisdatabase;
      var $waisurl;
       
      function check($url){
      $pos = @strpos($url,':',1);
      if($pos<1) return false;
      $prot = substr($url,0,$pos);
      if(!isset($this->regex[$prot])) return false;
      eval('$regex = '.$this->regex[$prot].';');
      return ereg('^'.$regex.'$',$url);
      }
       
      function urlcheck(){
      $this->lowalpha = '[a-z]';
      $this->hialpha = '[A-Z]';
      $this->alpha = '('.$this->lowalpha.'|'.$this->hialpha.')';
      $this->digit = '[0-9]';
      $this->safe = '[$.+_-]';
      $this->extra = '[*()\'!,]';
      $this->national = '([{}|\^~`]|\\[|\\])';
      $this->punctuation = '[<>#%"]';
      $this->reserved = '[?;/:@&=]';
      $this->hex = '('.$this->digit.'|[a-fA-F])';
      $this->escape = '(%'.$this->hex.'{2})';
      $this->unreserved = '('.$this->alpha.'|'.$this->digit.'|'.$this->safe.'|'.$this->extra.')';
      $this->uchar = '('.$this->unreserved.'|'.$this->escape.')';
      $this->xchar = '('.$this->unreserved.'|'.$this->reserved.'|'.$this->escape.')';
      $this->digits = '('.$this->digit.'+)';
       
      $this->urlpath = '('.$this->xchar.'*)';
      $this->password = '(('.$this->uchar.'|[?;&=]'.')*)';
      $this->user = '(('.$this->uchar.'|[?;&=]'.')*)';
      $this->port = $this->digits;
      $this->hostnumber = '('.$this->digits.'.'.$this->digits.'.'.$this->digits.'.'.$this->digits.')';
      $this->alphadigit = '('.$this->alpha.'|'.$this->digit.')';
      $this->toplabel = '('.$this->alpha.'|('.$this->alpha.'('.$this->alphadigit.'|-)*'.$this->alphadigit.'))';
      $this->domainlabel = '('.$this->alphadigit.'|('.$this->alphadigit.'('.$this->alphadigit.'|-)*'.$this->alphadigit.'))';
      $this->hostname = '(('.$this->domainlabel.'\\.)*'.$this->toplabel.')';
      $this->host = '('.$this->hostname.'|'.$this->hostnumber.')';
      $this->hostport = '('.$this->host.'(:'.$this->port.')?)';
      $this->login = '(('.$this->user.'(:'.$this->password.')?@)?'.$this->hostport.')';
       
      $this->ftptype = '[aidAID]';
      $this->fsegment = '(('.$this->uchar.'|[?:@&=])*)';
      $this->fpath = '('.$this->fsegment.'(/'.$this->fsegment.')*)';
      $this->ftpurl = '([fF][tT][pP]://'.$this->login.'(/'.$this->fpath.'(;[tT][yY][pP][eE]='.$this->ftptype.')?)?)';
       
      $this->fileurl = '([fF][iI][lL][eE]://('.$this->host.'|[lL][oO][cC][aA][lL][hH][oO][sS][tT])?/'.$this->fpath.')';
       
      $this->search = '(('.$this->uchar.'|[;:@&=])*)';
      $this->hsegment = '(('.$this->uchar.'|[;:@&=])*)';
      $this->hpath = '('.$this->hsegment.'(/'.$this->hsegment.')*)';
      $this->httpurl = '([hH][tT][tT][pP][sS]?://'.$this->hostport.'(/'.$this->hpath.'([?]'.$this->search.')?)?)';
       
      $this->gopher_string = '('.$this->xchar.'*)';
      $this->selector = '('.$this->xchar.'*)';
      $this->gtype = $this->xchar;
      $this->gopherurl = '([gG][oO][pP][hH][eE][rR]://'.$this->hostport.'(/('.$this->gtype.'('.$this->selector.'(%09'.$this->search.'(%09'.$this->gopher_string.')?)?)?)?)?)';
       
      $this->article = '(('.$this->uchar.'|[;/?:&=])+@'.$this->host.')';
      $this->group = '('.$this->alpha.'('.$this->alpha.'|'.$this->digit.'|[-.+_])*)';
      $this->grouppart = '([*]|'.$this->group.'|'.$this->article.')';
      $this->newsurl = '([nN][eE][wW][sS]:'.$this->grouppart.')';
       
      $this->nntpurl = '([nN][nN][tT][pP]://'.$this->hostport.'/'.$this->group.'(/'.$this->digits.')?)';
       
      $this->telneturl = '([tT][eE][lL][nN][eE][tT]://'.$this->login.'/?)';
       
      $this->wpath = '('.$this->uchar.'*)';
      $this->wtype = '('.$this->uchar.'*)';
      $this->database = '('.$this->uchar.'*)';
      $this->waisdoc = '([wW][aA][iI][sS]://'.$this->hostport.'/'.$this->database.'/'.$this->wtype.'/'.$this->wpath.')';
      $this->waisindex = '([wW][aA][iI][sS]://'.$this->hostport.'/'.$this->database.'[?]'.$this->search.')';
      $this->waisdatabase = '([wW][aA][iI][sS]://'.$this->hostport.'/'.$this->database.')';
      $this->waisurl = '('.$this->waisdatabase.'|'.$this->waisindex.'|'.$this->waisdoc.')';
      }
      }
       

    function htmlencode($str){
      $str = (string)$str;
       
      $ret = '';
      $len = strlen($str);
      $nl = false;
      for($i=0;$i<$len;$i++){
      $chr = $str[$i];
      switch($chr){
      case '<':
      $ret .= '<';
      $nl = false;
      break;
      case '>':
      $ret .= '>';
      $nl = false;
      break;
      case '"':
      $ret .= '"';
      $nl = false;
      break;
      case '&':
      $ret .= '&';
      $nl = false;
      break;
      /*
      case ' ':
      $ret .= ' ';
      $nl = false;
      break;
      */
      case chr(9):
      $ret .= '    ';
      $nl = false;
      break;
    /*
      case chr(10):
      if($nl) $nl = false;
      else{
      $ret .= '<br>';
      $nl = true;
      }
      break;

      case chr(13):
      if($nl) $nl = false;
      else{
      $ret .= '<br>';
      $nl = true;
      }
      break;
    */
      default:
      $ret .= $chr;
      $nl = false;
      break;
      }
      }
       
      return $ret;
      }
       
       
      function htmlencode4textarea($str){
      $str = (string)$str;
       
      $ret = '';
      $len = strlen($str);
      for($i=0;$i<$len;$i++){
      $chr = $str[$i];
      switch($chr){
      case '<':
      $ret .= '<';
      break;
      case '>':
      $ret .= '>';
      break;
      case '"':
      $ret .= '"';
      break;
      case '&':
      $ret .= '&';
      break;
      case ' ':
      $ret .= ' ';
      break;
      case chr(9):
      $ret .= '    ';
      break;
      default:
      $ret .= $chr;
      break;
      }
      }
       
      return $ret;
      }
       
      function emailcheck($email){
      $ret=false;
      if(strstr($email, '@') && strstr($email, '.')){
      if(eregi("^([_a-z0-9]+([\\._a-z0-9-]+)*)@([a-z0-9]{2,}(\\.[a-z0-9-]{2,})*\\.[a-z]{2,3})$", $email)){
      $ret=true;
      }
      }
      return $ret;
      }
       
      function str2url($path){
      return eregi_replace("%2f","/",urlencode($path));
      }

    ?>
    --------------------------

    說明:在網上找了半天發現全是何志強的那段代碼,我也就拿來改了一下用上了。其中加入了一部分自己的內容,只是還不太清楚如何規定圖片等元素的大小。我曾經把 function img($start,$end,$value){
      $trim_value=trim($value);
      if ((strtolower(substr($trim_value,0,7))!="http://") or ($this->urlcheck->check($trim_value)))
      return '<img src="'.$trim_value.'"></img>';
      else return '['.$start.']'.$value.'[/'.$end.']';
      }
    改為:
    function img($start,$end,$value){
      $trim_value=trim($value);
      if ((strtolower(substr($trim_value,0,7))!="http://") or ($this->urlcheck->check($trim_value)))
    {
    $pisces=explode(" ",$start);
    if(!is_int($pisces[1]) || !!is_int($pisces[2]))
    return '<img src="'.$trim_value.'" width=$pisces[1] height=$pisces[2]></img>';
    else
    return '<img src="'.$trim_value.'"></img>';
    }
      
      else return '['.$start.']'.$value.'[/'.$end.']';
      }

    但由于對前面的正則表達式不熟悉沒成功。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>