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 . '...'; break; //如果进行了截取,字符串末尾加省略符号“...” } } return $s; }
使用メソッド:
$str = '看看截取到哪里?'; echo cut($str,1); echo '<br>'; echo cut($str,4); echo '<br>'; echo cut($str,5); echo '<br>'; echo cut($str,5,false); echo '<br>'; $str = '中英文混合看看hello?'; echo cut($str,18); echo '<br>'; echo cut($str,50);
出力:
看... 看看... 看看... 看看 中英文混合看看hel... 中英文混合看看hello?
説明: 一般に、UTF-8 形式は 3 バイトですが、GBK 互換の gb2312 は通常 2 バイトです。上記の UTF-8 エンコードを使用します。例として。
省略記号モードは、3 番目のパラメーター $more によってオンとオフを切り替えることができます。省略記号がある場合はデフォルト値が true、省略記号がない場合は false です。