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 表示されません
注: 正常に呼び出せない場合は、関数ライブラリがロードされていないことを意味します。Load('extend'); を使用して関数をロードし、アクションに追加できます。
注: 関数ライブラリを拡張する方法は、直接使用することはできません。使用する前に、プロジェクト関数ライブラリにロードまたはコピーする必要があります。
拡張関数ライブラリをロードするには、次を使用します:
Load('extend');
拡張関数ライブラリをロードした後、その中のすべての関数を呼び出すことができます。
functionindex(){
Load('extend'); //ここにあります!
if($_POST['パスワード']!=$_POST['再パスワード']){
$this->error('2 つのパスワードが一致しません');
$user=D('ユーザー');
if ($vo=$user->create()){
...
}
試してみると、公式の msubstr 関数はとにかく楕円を追加できないようです。公式 Web サイトのフォーラムで修正方法を見つけました。テストは普通に使えますよ~! Commonextend.php ファイルの msubstr 関数を次のコードに変更します:
Php code
/**
+----------------------------------------------- --- ----------
* 文字列インターセプト、中国語およびその他のエンコーディングをサポート
+---------------------- - ----------------------------------
* @static
* @access public
+- -------------------------------------------------- - ------
* @param string $str 変換対象の文字列
* @param string $start 開始位置
* @param string $length インターセプト長
* @param string $charset エンコード形式
* @param string $suffix 表示文字を切り詰めます
+------------------------------------- --- --------------------------
* @return string
+-------------------------- -------------------------------------------------------- ----
*/
function msubstr($str, $start=0, $length, $charset=" utf -8", $suffix=true)
{
if(function_exists("mb_substr")){
if($suffix)
mb_substr($str, $start, $length, $charset) を返します。 " ... ";
Else
Return MB_SUBSTR ($ Str, $ Start, $ Length, $ Charset); を返します。
それ以外の場合 return iconv_substr ($ Str, $ Length, $ Charset); ['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."…";
$slice を返す;
}