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

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

高洛峰
高洛峰オリジナル
2016-10-21 10:27:201014ブラウズ

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 です。


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