php 中英混杂字符串截取
<?php
/*
* 中英文字符串的截取
*/
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) <= $Length ) {
return $String;
}
else
{
$I = 0;
while ($I < $Length)
{
$StringTMP = substr($String,$I,1);
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast[] = $StringTMP;
}
$StringLast = implode(”",$StringLast);
if($Append)
{
$StringLast .= “…”;
}
return $StringLast;
}
}
function cut($Str, $Length) //$Str为截取字符串,$Length为需要截取的长度
{
global $s;
$i = 0;
$l = 0;
$ll = strlen($Str);
$s = $Str;
$f = true;
while ($i <= $ll)
{
if (ord($Str{$i}) < 0×80) {
$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)) {
$s = $s . ‘…’; break; //如果进行了截取,字符串末尾加省略符号“…”
}
}
return $s;
}
$String = “你好aaa”;
$Length = “5″;
echo cut($String,$Length);
?>