php代码截取,php字符串截取的代码学习

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-30 17:17   19   0

1、截取utf8字符串

复制代码 代码如下:

//截取utf8字符串

function utf8Substr($str, $from, $len)

{

return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.

'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',

'$1',$str);

}

?>

2、UTF-8、GB2312都支持的汉字截取函数

复制代码 代码如下:

function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')

{

if($code == 'UTF-8')

{

$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";

preg_match_all($pa, $string, $t_string);

if(count($t_string[0])- $start > $sublen)return join('', array_slice($t_string[0], $start, $sublen))."...";

return join('', array_slice($t_string[0], $start, $sublen));

}

else

{

$start = $start*2;

$sublen = $sublen*2;

$strlen = strlen($string);

$tmpstr = '';

for($i=0;$i

{

if($i>=$start && $i

{

if(ord(substr($string, $i, 1))>129)

{

$tmpstr.= substr($string, $i, 2);

}

else

{

$tmpstr.= substr($string, $i, 1);

}

}

if(ord(substr($string, $i, 1))>129)$i++;

}

if(strlen($tmpstr)

return $tmpstr;

}

}

$str = "abcd需要截取的字符串";

echo cut_str($str, 8, 0, 'gb2312');

?>

3、BugFree 的字符截取函数

复制代码 代码如下:

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;

}

}

$String = "CodeBit.cn -- 简单、精彩、通用";

$Length = "18";

$Append = false;

echo sysSubStr($String,$Length,$Append);

?>

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP