ホームページ >バックエンド開発 >PHPチュートリアル >Thinkphp の中国語と英語の文字列インターセプト関数で省略記号が表示される

Thinkphp の中国語と英語の文字列インターセプト関数で省略記号が表示される

小云云
小云云オリジナル
2018-03-13 13:47:332430ブラウズ

Thinkphp には、smarty に匹敵するテンプレート エンジンが組み込まれており、非常に便利です。関数の呼び出しも同様で、smartyと同じように必要な関数を呼び出すことができ、公式には誰でも呼び出せる一般的に使用される関数がいくつか組み込まれています。

たとえば、今日話しているインターセプト文字列関数は、thinkphp テンプレート エンジンで次のように記述できます: {$vo.title|msubstr=0,5,'utf-8′,false} {$ についてはvo.title} 誰もがよく知っているはずです。次の関数 msubstr について説明します。これは、文字列 $vo.title を 0 文字から開始して 5 文字をインターセプトすることを意味します。 UTF-8 エンコードが使用されており、デフォルトでは省略記号はインターセプト後に表示されません。省略記号を表示したい場合は、false を true に変更するだけです。

関数の説明:

msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true)

  • $str: インターセプトされる文字列

  • $start=0: 開始位置、デフォルトは 0 から始まります

  • $length: インターセプト長

  • $charset=”utf-8″: 文字エンコーディング、デフォルトは UTF-8

  • $suffix=true:インターセプトされた文字の後に省略記号を表示するかどうか、デフォルトは表示する場合は true、表示しない場合は false です

ps: 正常に呼び出せない場合は、関数ライブラリがロードされていないことを意味します。Load を使用できます。 ('extend'); 関数をロードするには、それをアクションに入れるだけです~!

試してみたところ、公式の msubstr 関数はとにかく楕円を追加できないようで、公式サイトのフォーラムで修正方法を見つけたので、テストしたところ正常に使用できました〜!

Commonextend.PHP ファイルの msubstr 関数を次のコードに変更します:

  1. function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)    
    {    
        if(function_exists("mb_substr")){    
            if($suffix)    
                 return mb_substr($str, $start, $length, $charset)."...";    
            else   
                 return mb_substr($str, $start, $length, $charset);    
        }    
        elseif(function_exists('iconv_substr')) {    
            if($suffix)    
                 return iconv_substr($str,$start,$length,$charset)."...";    
            else   
                 return iconv_substr($str,$start,$length,$charset);    
        }    
        $re['utf-8']   = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";    
        $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";    
        $re['gbk']    = "/[x01-x7f]|[x81-xfe][x40-xfe]/";    
        $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) return $slice."…";    
        return $slice;  
    }

関連推奨事項:

php の文字列インターセプト関数 mb_substr の例

php 文字列インターセプト関数の使用法

php中国語と英語の文字列インターセプト機能(htmlを含む)

以上がThinkphp の中国語と英語の文字列インターセプト関数で省略記号が表示されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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