Exemple #1
0
 /**
  * SJIS文字列の末尾が、第一バイトであれば、タグが壊れる要因となるのでカットする。
  *
  * @access  public
  * @return  string
  */
 function fixSjis($str)
 {
     if (strlen($str) == 0) {
         return;
     }
     $un = unpack('C*', $str);
     $after_sjis1st = false;
     $after_crasher = false;
     foreach ($un as $v) {
         if ($after_sjis1st) {
             $after_sjis1st = false;
             $after_crasher = false;
         } else {
             if (StrSjis::isSjis1stByte($v)) {
                 $after_sjis1st = true;
                 $after_crasher = true;
             } elseif (StrSjis::isSjisCrasherCode($v)) {
                 $after_crasher = true;
             } else {
                 $after_crasher = false;
             }
         }
     }
     if ($after_crasher) {
         $str = substr($str, 0, -1);
     }
     return $str;
     /*
     // 末尾のみをチェックするためのコード。これでは不足。
     if (StrSjis::isSjisCrasherCode($un[$count]) && !StrSjis::isSjis1stByte($un[$count-1])) {
         $str = substr($str, 0, -1);
         return $str;
     }
     */
 }
Exemple #2
0
 /**
  * 名前をHTML用に変換して返す
  *
  * @access  private
  * @return  string  HTML
  */
 function transName($name, $resnum)
 {
     global $_conf;
     $nameID = '';
     // ID付なら名前は "aki </b>◆...p2/2... <b>" といった感じでくる。(通常は普通に名前のみ)
     // ID付なら分解する
     if (preg_match('~(.*)( </b>◆.*)~', $name, $matches)) {
         $name = rtrim($matches[1]);
         $nameID = trim(strip_tags($matches[2]));
     }
     // 数字を引用レスポップアップリンク化
     // </b>〜<b> は、ホスト(やトリップ)なのでマッチしないようにしたい
     /*
     if ($name) {
         $pettern = '/^( ?(?:&gt;|>)* ?)?([1-9]\d{0,3})(?=\\D|$)/';
         $name = preg_replace_callback($pettern, array($this, 'quote_res_callback'), $name, 1);
     }
     */
     if (strlen($name) && $name != $this->BBS_NONAME_NAME) {
         $name = preg_replace_callback($this->getAnchorRegex('/(?:^|%prefix%)%nums%/'), array($this, 'quote_name_callback'), $name);
     }
     // ふしあなさんとか?
     $name = preg_replace('~</b>(.+?)<b>~', '<font color="#777777">$1</font>', $name);
     $name = StrSjis::fixSjis($name);
     if ($nameID) {
         $name .= $nameID;
     }
     return $name;
 }
Exemple #3
0
 /**
  * アンカーの正規表現を返す
  *
  * @param   string  $pattern  ex)'/%full%/'
  * @param   boolean $unicode
  * @return  string
  */
 public static function getAnchorRegex($pattern, $unicode = false)
 {
     if (!array_key_exists($pattern, self::$_anchorRegexes)) {
         self::$_anchorRegexes[$pattern] = strtr($pattern, self::_getAnchorRegexParts());
         // 大差はないが compileMobile2chUriCallBack() のように preg_relplace_callback()してもいいかも。
     }
     if ($unicode) {
         return StrSjis::toUnicodePattern($_anchorRegexes[$pattern]);
     }
     return self::$_anchorRegexes[$pattern];
 }
Exemple #4
0
 /**
  * 名前をHTML用に変換して返す
  *
  * @access  private
  * @return  string
  */
 function transName($name, $resnum)
 {
     global $_conf;
     $nameID = "";
     // ID付なら名前は "aki </b>◆...p2/2... <b>" といった感じでくる。(通常は普通に名前のみ)
     // ID付なら分解する
     if (preg_match("~(.*)( </b>◆.*)~", $name, $matches)) {
         $name = rtrim($matches[1]);
         $nameID = trim(strip_tags($matches[2]));
     }
     // 数字を引用レスポップアップリンク化
     if ($_conf['quote_res_view']) {
         // </b>〜<b> は、ホスト(やトリップ)なのでマッチしないようにしたい
         $pettern = '/^( ?(?:&gt;|>)* ?)?([1-9]\\d{0,3})(?=\\D|$)/';
         $name && ($name = preg_replace_callback($pettern, array($this, 'quote_res_callback'), $name, 1));
     }
     // ふしあなさんとか?
     $name = preg_replace('~</b>(.+?)<b>~', '<font color="#777777">$1</font>', $name);
     //(strlen($name) > 0) and $name = $name . " "; // 文字化け回避
     $name = StrSjis::fixSjis($name);
     if ($nameID) {
         $name = $name . $nameID;
     }
     return $name;
 }
Exemple #5
0
 /**
  * 名前をHTML用に変換して返す
  *
  * @access  private
  * @return  string  HTML
  */
 function transName($name, $resnum)
 {
     global $_conf;
     $nameID = '';
     // ID付なら名前は "aki </b>◆...p2/2... <b>" といった感じでくる。(通常は普通に名前のみ)
     // ID付なら分解する
     if (preg_match('~(.*)( </b>◆.*)~', $name, $matches)) {
         $name = rtrim($matches[1]);
         $nameID = trim(strip_tags($matches[2]));
     }
     // 数字を引用レスポップアップリンク化
     if ($_conf['quote_res_view']) {
         // </b>〜<b> は、ホスト(やトリップ)なのでマッチしないようにしたい
         if ($name) {
             $name = preg_replace_callback($this->getAnchorRegex('/(?:^|%prefix%)%nums%/'), array($this, 'quote_name_callback'), $name);
         }
     }
     // ふしあなさんとか?
     $name = preg_replace('~</b>(.+?)<b>~', '<font color="#777777">$1</font>', $name);
     $name = StrSjis::fixSjis($name);
     if ($nameID) {
         $name = $name . $nameID;
     }
     return $name;
 }