ホームページ >バックエンド開発 >PHPチュートリアル >thinkPHP の組み込み文字列インターセプト関数について

thinkPHP の組み込み文字列インターセプト関数について

不言
不言オリジナル
2018-06-08 15:25:592255ブラウズ

この記事では、thinkPHP の組み込み文字列インターセプト関数の使い方を主に紹介し、thinkPHP の組み込み文字列インターセプト関数の機能と具体的な使用方法、およびそれができない場合のソース コード変更テクニックを分析します。次へ

この記事の例では、thinkPHP の組み込み文字列インターセプト関数の使用方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです。

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

たとえば、今日説明する文字列インターセプト関数は、thinkphp テンプレート エンジンで次のように記述できます: {$vo.title|msubstr=0,5,'utf-8',false} for {$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: If not 通常に呼び出された場合は、関数ライブラリがロードされていないことを意味します。Load('extend'); を使用して関数をロードし、それをアクションに入れるだけです。 試してみた結果:公式の msubstr 関数はとにかく楕円を追加できないようで、公式サイトのフォーラムで修正方法を見つけたので、試してみたら普通に使えるようになりました~!

Common\extend.php ファイルの msubstr 関数を次のコードに変更します:

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 中国語 Web サイトに注目してください。

関連する推奨事項:

ThinkPHP CURD メソッドのテーブル メソッドについて


ThinkPHP の組み込み ThinkAjax を使用して非同期を実装する伝送技術実装


以上がthinkPHP の組み込み文字列インターセプト関数についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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