ホームページ  >  記事  >  php教程  >  Zhang Jinjie - THinkPHP 開発テンプレートにおける中国語文字列データ長のインターセプト

Zhang Jinjie - THinkPHP 開発テンプレートにおける中国語文字列データ長のインターセプト

WBOY
WBOYオリジナル
2016-06-16 08:41:131198ブラウズ

THinkPHP 3.1.3 開発テンプレートは、中国語の文字列データの長さをインターセプトします。ウェブサイトの機能開発、ウェブサイトの模倣、難しいプログラミング、プロのエンジニアにお問い合わせください QQ467477957
thinkphp テンプレートで中国語の文字列コードをインターセプトする方法
プロジェクト開発中に、中国語の文字列インターセプトに関する問題がよく発生します。たとえば、ニュース リスト ページでニュース コンテンツの簡単な紹介が必要な場合、文字列インターセプトが必要になります。ここで、カプセル化された文字列インターセプト関数を共有します。 機能の説明: <code class="prettyprint linenums lang-php">函数解释:<br> msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true)<br> $str:要截取的字符串<br> $start=0:开始位置,默认从0开始<br> $length:截取长度<br> $charset=”utf-8″:字符编码,默认UTF-8<br> $suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示<br> 模版使用:{$vo.title|msubstr=0,5,'utf-8',false} msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true)function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)  <br>     {  <br>   if(function_exists("mb_substr")){  <br>               if($suffix)  <br>               return mb_substr($str, $start, $length, $charset)."...";  <br>               else<br>                    return mb_substr($str, $start, $length, $charset);  <br>          }  <br>          elseif(function_exists('iconv_substr')) {  <br>              if($suffix)  <br>                   return iconv_substr($str,$start,$length,$charset)."...";  <br>              else<br>                   return iconv_substr($str,$start,$length,$charset);  <br>          }  <br>          $re['utf-8']   = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef]<br>                   [x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";  <br>          $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";  <br>          $re['gbk']    = "/[x01-x7f]|[x81-xfe][x40-xfe]/";  <br>          $re['big5']   = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";  <br>          preg_match_all($re[$charset], $str, $match);  <br>          $slice = join("",array_slice($match[0], $start, $length));  <br>          if($suffix) return $slice."…";  <br>          return $slice;<br>     } $str: インターセプトする文字列
$start=0: 開始位置、デフォルトでは 0 から始まります <tr><br>   <td width="15%" class="altbg1" ><b>简述:</b></td><br>   <td width="85%" class="altbg2"><label><br>  <br>   <textarea name="brief" cols="50" id="brief">{$data.brief|msubstr=0,36,'utf-8',false}</textarea><br>   <span class="STYLE2">*简述,默认截取36个中文汉字的字符数</span><br>   </label></td><br> </tr> $length: 切片の長さZhang Jinjie - THinkPHP 開発テンプレートにおける中国語文字列データ長のインターセプト $charset="utf-8": 文字エンコーディング、デフォルトは UTF-8
$suffix=true: インターセプトされた文字の後に省略記号を表示するかどうか。デフォルトは表示する場合は true、表示しない場合は false です。 テンプレートの使用法: {$vo.title|msubstr=0,5,'utf-8',false} 次のコードを thinkphp コア パッケージの /common/functions.php の最後に貼り付けると、次のようになります。 HTML モデル内で function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) <img src="/Uploads/editor/2016-06-15/57607d6e35f9a.png" alt="Zhang Jinjie - THinkPHP 開発テンプレートにおける中国語文字列データ長のインターセプト" > を直接使用します。 { <p class="da_word"> if(function_exists("mb_substr")){ </p> If($suffix) MB_SUBSTR($ str、$ start、$ length、$ charset) その他 return mb_substr($str, $start, $length, $charset);                                                                                                      elseif(function_exists('iconv_substr')) { If($suffix) return iconv_substr($str,$start,$length,$charset)."..."; その他 iconv_substr($str,$start,$length,$charset) を返します                                                                                                      $ re ['utf-8'] [x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; $ re ['gbk'] $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; Preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); If($suffix) は $slice を返します。"…"; return $slice; } 開発テンプレート、<tr> で使用されます。 <td width="15%" class="altbg1" ><b>簡単な説明:</b></td> <td width="85%" class="altbg2"><label> <textarea name="brief"cols="50" id="brief">{$data.brief|msubstr=0,36,'utf-8',false}</textarea> <span class="STYLE2">*簡単な説明、デフォルトでは 36 文字の中国語文字がインターセプトされます</span> </label></td> </tr> 広告: 本当に無料、ドメイン名 + 仮想マシン + 企業メール = 0 元

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。