Categorized | Biocompute

PHP 截取字符串专题

Posted on 04 四月 2009 by 柳城 ,阅读 212

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($str, 8, 0, '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, $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)< $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);
?>

转载请注明 : 来源于 PHP 截取字符串专题 | 柳城

赞助商

Leave a Reply

广告招租

[强] [握手] [可爱] [ok] [呲牙] :) [偷笑] [流泪] [疑问] [亲亲] [擦汗] [得意] [衰] [可怜] [抱拳] [坏笑] more »

无觅相关文章插件,快速提升流量

adobe free

adobe free

winrar 3 download

winrar 3 download freedownload

windows 7 free

windows 7 crack

key office 2010

office 2010 key

download photo shop free

photo shop serial

corel dvd moviefactory 6

corel dvd moviefactory 6 downloads

free corel photoshop download

free corel photoshop download keygen

photoshop key

photoshop key

free corel downloads

free corel downloads cracked

free winrar download for xp

download winrar for xp for free

serial corel draw 11

serial corel draw 11 serials

windows 7 key

windows 7 key

photo shop key

photo shop key

winrar password cracker serial

wirar password cracker

serial winzip 11

serial winzip 11 key

cs5 serialz

cs5 serialz free

office 2010 professional key

office 2010 key

office 2010 free

office 2010 key

windows key

windows key