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);
?>

shuck Mar 3rd 2008 10:10 pm php技术 No Comments yet Trackback URI Comments RSS

Leave a Reply