ホームページ > バックエンド開発 > PHPチュートリアル > PHP文字列インターセプト長カスタムメソッド

PHP文字列インターセプト長カスタムメソッド

高洛峰
リリース: 2016-10-21 10:27:20
オリジナル
1045 人が閲覧しました

PHPカスタム関数を使用して、インターセプトしたい文字の長さをインターセプトし、省略記号を使用して余分な部分を置換または非表示にする方法を以下に紹介します。


文字列インターセプトメソッド:

//截取字符串长度
function cut($Str, $Length,$more=true) {
    //$Str为截取字符串,$Length为需要截取的长度
    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 . &#39;...&#39;; 
            break; 
            //如果进行了截取,字符串末尾加省略符号“...”
        }
    }
    return $s;
}
ログイン後にコピー

使用メソッド:

$str = &#39;看看截取到哪里?&#39;;
echo cut($str,1);
echo &#39;<br>&#39;;
echo cut($str,4);
echo &#39;<br>&#39;;
echo cut($str,5);
echo &#39;<br>&#39;;
echo cut($str,5,false);
echo &#39;<br>&#39;;
 
$str = &#39;中英文混合看看hello?&#39;;
echo cut($str,18);
echo &#39;<br>&#39;;
echo cut($str,50);
ログイン後にコピー

出力:

看...
看看...
看看...
看看
中英文混合看看hel...
中英文混合看看hello?
ログイン後にコピー

説明: 一般に、UTF-8 形式は 3 バイトですが、GBK 互換の gb2312 は通常 2 バイトです。上記の UTF-8 エンコードを使用します。例として。

省略記号モードは、3 番目のパラメーター $more によってオンとオフを切り替えることができます。省略記号がある場合はデフォルト値が true、省略記号がない場合は false です。


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート