PHP 文字列インターセプト カスタム関数は開発プロセスでよく使用する関数で、一般的には PHP の組み込み関数を使用しても問題ありませんが、特に使いやすいわけではなく、特に中国語のサポートが特にフレンドリーではありません。したがって、独自のカスタマイズしたものを使用します。
//$Str为截取字符串,$Length为需要截取的长度 function cut($Str, $Length,$more=true) { global $s; $i = 0; $l = 0; $ll = strlen($Str); $s = $Str; $f = true; while ($i <= $ll) { if (ord($Str{$i}) < 0x80) { $l++; $i++; } else if (ord($Str{$i}) < 0xe0) { $l++; $i += 2; } else if (ord($Str{$i}) < 0xf0) { $l += 2; $i += 3; } else if (ord($Str{$i}) < 0xf8) { $l += 1; $i += 4; } else if (ord($Str{$i}) < 0xfc) { $l += 1; $i += 5; } else if (ord($Str{$i}) < 0xfe) { $l += 1; $i += 6; } if (($l >= $Length - 1) && $f) { $s = substr($Str, 0, $i); $f = false; } if (($l > $Length) && ($i < $ll) && $more) { $s = $s . '...'; break; //如果进行了截取,字符串末尾加省略符号“...” } } return $s; }
呼び出しメソッドは非常に簡単です。通常の PHP ファイル内でメソッド名を直接呼び出すだけです:
cut();
ただし、パラメーターを渡す必要があります。一般に、1 番目と 2 番目は必須で、3 番目はオプションです
たとえば、文字列の最初の 10 文字をインターセプトしたい場合は、次のように
cut($str,10);
を呼び出します。$str はインターセプトする文字列、10 は長さです。
デフォルトでは、インターセプト前の長さがインターセプト後の長さを超える場合、超過部分関数はデフォルトで「...」を使用して次の文字列を置き換えるためです
超過部分を非表示にしたくない場合' ...' に置き換えると、最後に別のパラメーター 'false' を追加するだけです (
cut($str,10,false);