PHP 截取字符串专题

1.截取GB2312中文字符串phpphp//截取中文字符串function mysubstr($PHP
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

1. 截取GB2312中文字符串

<?php

< ?

php


//截取中文字符串


function
 
mysubstr
(
$str

$start

$len
)
 
{

   

$tmpstr
 = 
""
;
   

$strlen
 = 
$start
 + 
$len
;
   

for
(
$i
 = 
0

$i
 < 
$strlen

$i
++
)
 
{

   

if
(
ord
(
substr
(
$str

$i

1
))
 > 
0xa0
)
 
{

   

$tmpstr
 .= 
substr
(
$str

$i

2
)
;
   

$i
++;
   

}
 
else

   

$tmpstr
 .= 
substr
(
$str

$i

1
)
;
   

}

   

return
 
$tmpstr
;

}

?>

 

2. 截取utf8编码的多字节字符串

<?php

< ?

php


//截取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
)
;

}

?>

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

<?php

< ?

php


/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/

   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 = ''

$str = "abcd需要截取的字符串";
echo cut_str($str80'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)

;

;
   for($i=0$i$strlen$i++)
   
{
   
if($i>=$start && $i($start+$sublen))
   
{
   
if(ord(substr($string$i1))>129)
   
{
   
$tmpstr.= substr($string$i2);
   
}
   
else
   
{
   
$tmpstr.= substr($string$i1);
   
}
   
}
   
if(ord(substr($string$i1))>129) $i++;
   
}
   
if(strlen($tmpstr)$strlen ) $tmpstr.= "...";
   
return $tmpstr;
   
}
}

4. BugFree 的字符截取函数

<?php

< ?

php


/**
*

 @package 
BugFree
*

 @version 
$Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $

*
*
* Return part of a string(Enhance the function substr())
*
*

 @author 
Chunsheng Wang <
wwccss@263.net
>
*

 @param 
string $String the string to cut.
*

 @param 
int $Length the length of returned string.
*

 @param 
booble $Append whether append "...": false|true
*

 @return 
string the cutted string.
*/



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

本文来源21aspnet,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/2136

发表评论