版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PHP 截取字符串函数2007年11月27日 星期二 02:59 P.M.1. 截取GB2312中文字符串/截取中文字符串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;?&g
2、t;2. 截取utf8编码的多字节字符串/截取utf8字符串function utf8Substr($str, $from, $lenreturn preg_replace('#(?:x00-x7F|xC0-xFFx80-xBF+0,'.$from.''.'(?:x00-x7F|xC0-xFFx80-xBF+0,'.$len.'.*#s','$1',$str;?>3. UTF-8、GB2312都支持的汉字截取函数/* Utf-8、gb2312都支持的汉字截取函数 cut_str(字符串, 截取长度, 开始长度
3、, 编码; 编码默认为 utf-8 开始长度默认为 0 */ function cut_str($string, $sublen, $start = 0, $code = 'UTF-8' if($code = 'UTF-8' $pa = "/x01-x7f|xc2-xdfx80-xbf|xe0xa0-xbfx80-xbf|xe1-xefx80-xbfx80-xbf|xf0x90-xbfx80-xbfx80-xbf|xf1-xf7x80-xbfx80-xbfx80-xbf/" preg_match_all($pa, $string, $t_st
4、ring; if(count($t_string0 - $start > $sublen return join('', array_slice($t_string0, $start, $sublen."." return join('', array_slice($t_string0, $start, $sublen; else $start = $start*2; $sublen = $sublen*2; $strlen = strlen($string; $tmpstr = '' for($i=0; $i<$
5、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; $str = "abcd需要截取
6、的字符串" echo cut_str($str, 8, 0, 'gb2312' ?>4. BugFree 的字符截取函数/* * 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> * param string $String the
7、 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 < $Le
8、ngth $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 $St
9、ringLast .= "." return $StringLast; $String = "CodeB - 简单、精彩、通用" $Length = "18" $Append = false; echo sysSubStr($String,$Length,$Append; ?> _我的解决GB2312编码截取字符串的方案用法和substr一样phpfunction strsub($str,$start,$length=null if(isset($length
10、60; $lens = bsize($str,$start; $lene = bsize($str,$start+$length; if($lens%2!=0 $start -=1;
11、0; $flag = 1; if($lene%2!=1&&$flag=1 $length -=1; else if($lene%2=1
12、 $length -=1; return substr($str,$start,$length; else $lens = bsize($str,$start;
13、160; if($lens%2!=0 $start -=1; return substr($str,$start; function bsize($str,$start
14、60; $len = 0; if($start = 0 return 0; for($i=($start-1;$i>=0;$i- if(ord(substr($str,$i,1>127 $len+; else &
15、#160; return $len; return $len; /php* 程序一:PHP截取中文字符串方法由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr,今天找到一个比较好的截取中文字符串方法,在此与大家共享。function msubstr($
16、str, $start, $len $tmpstr = "" $strlen = $start + $len; for($i = 0; $i < $strlen; $i+ if(ord(substr($str, $i, 1 > 0xa0
17、$tmpstr .= substr($str, $i, 2; $i+; else $tmpstr .= substr($str, $i, 1; return $tmpstr;程序
18、二:PHP截取UTF-8字符串,解决半字符问题/* PHP截取UTF-8字符串,解决半字符问题。* 英文、数字(半角)为1字节(8位),中文(全角)为3字节* return 取出的字符串, 当$len小于等于0时, 会返回整个字符串* param $str 源字符串* $len 左边的子串的长度*/function utf_substr($str,$lenfor($i=0;$i<$len;$i+$temp_str=substr($str,0,1;if(ord($temp_str > 127$i+;if($i<$len$new_str=substr($str,0,3;$str=
19、substr($str,3;else$new_str=substr($str,0,1;$str=substr($str,1;return join($new_str;?> php utf-8 字符串截取 function cutstr($string, $length preg_match_all("/x01-x7f|xc2-xdfx80-xbf|xe0xa0-xbfx80-xbf|xe1-xefx80-xbfx80-xbf|xf0x90-xbfx80-xbfx80-xbf|xf1-xf7x8
20、0-xbfx80-xbfx80-xbf/", $string, $info; for($i=0; $i $wordscut .= $info0$i;
21、160; $j = ord($info0$i > 127 ? $j + 2 : $j + 1; if ($j > $length - 3
22、160; return $wordscut." ." return join('', $info0; $string="242432 反对感是 456 犯得上广泛大使馆地方 7890&qu
23、ot; for($i=0;$i echo cutstr($string,$i."" ?> 截取utf-8字符串函数为了支持多语言,数据库里的字符串可能保存为UTF-8编码,在网站开发中可能需要用php截取字符串的一部分。为了避免出现乱码现象,编写如下的UTF-8字符串截取函数关于utf-8的原理请看 url= FAQ/color/urlUTF-8编码的字符可能由13个字节组成, 具体数目可以由第一个字节判断出来。(理论上可能更长,但这里假设不超过3个字节第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符第一个字节大于192小于224的,它与它之后的
24、1个字节组成一个UTF-8字符否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)。以前为某网站设计的代码(也是现在用在首页的长度截取的函数bCode:/b/$sourcestr 是要处理的字符串 /$cutlength 为截取的长度(即字数 function cut_str($sourcestr,$cutlength $returnstr='' $i=0; $n=0; $str_length=strlen($sourcestr;/字符串的字节数
25、160; while ($n<$cutlength and ($i<=$str_length $temp_str=substr($sourcestr,$i,1; $ascnum=Ord($temp_str;/得到字符串中第$i位字符的ascii码 if ($ascnum>=224 /如果ASCII位高与224,
26、; $returnstr=$returnstr.substr($sourcestr,$i,3; /根据UTF-8编码规范,将3个连续的字符计为单个字符 $i=$i+3;
27、0; /实际Byte计为3 $n+; /字串长度计1 elseif ($ascnum>=192 /如果ASCII位高与192,
28、0; $returnstr=$returnstr.substr($sourcestr,$i,2; /根据UTF-8编码规范,将2个连续的字符计为单个字符 $i=$i+2; /实际Byte计为2 $n+;
29、 /字串长度计1 elseif ($ascnum>=65 && $ascnum<=90 /如果是大写字母, $returnstr=$returnstr.substr($sourcestr,$i,1; $i=$i+1; /实际的Byte数仍计1个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借用职工车辆合同模板
- 肝动脉造影术的放射剂量优化与安全
- 客户关系管理数字化
- 知识图谱与制造业本体的协同
- 个人获奖感言14篇
- 2024年梨树县一级造价工程师《土建计量》预测试题含解析
- 江苏省无锡市锡东片2023-2024学年中考一模数学试题含解析
- 成都景物油画课程设计
- 一年级安全主题演讲稿模板5篇
- 月度职工工作总结大全10篇
- 2023年全国职业院校技能大赛赛项-ZZ019 智能财税基本技能赛题 - 模块三
- 《BIM建模基础》全套教学课件
- 重庆市忠县2022-2023学年七年级下学期期末语文试题(解析版)
- 妊娠合并心衰
- 体育特长生田径项目测试表
- 2024-2030年中国鲟鱼养殖行业发展监测及投资战略规划报告
- 2024年全国司法考试《专利法》模拟试题解析及答案(三)
- 数学和环境学的关系与应用
- 非遗文化介绍课件:花灯
- 国外装饰行业现状分析
- 速冻米面制品工艺流程及操作规程
评论
0/150
提交评论