电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP截取中文字符串方法總結

瀏覽:93日期:2024-01-12 17:29:48

程序一:PHP截取中文字符串方法

由于網站首頁以及vTigerCRM里經常在截取中文字符串時出現亂碼(使用substr),今天找到一個比較好的截取中文字符串方法,在此與大家共享。

function msubstr($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;}

程序二:PHP截取UTF-8字符串,解決半字符問題

/******************************************************************* PHP截取UTF-8字符串,解決半字符問題。* 英文、數字(半角)為1字節(8位),中文(全角)為3字節* @return 取出的字符串, 當$len小于等于0時, 會返回整個字符串* @param $str 源字符串* $len 左邊的子串的長度****************************************************************/function utf_substr($str,$len){for($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=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-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]/', $string, $info) for($i=0; $i<count($info[0]); $i++) { $wordscut .= $info[0][$i]; $j = ord($info[0][$i]) > 127 ? $j + 2 : $j + 1; if ($j > $length - 3) { return $wordscut.' ...'; } } return join('', $info[0]);}$string='242432反對感是456犯得上廣泛大使館地方7890';for($i=0;$i<strlen($string);$i++){echo cutstr($string,$i).'<br>';}?>

截取utf-8字符串函數

為了支持多語言,數據庫里的字符串可能保存為UTF-8編碼,在網站開發中可能需要用php截取字符串的一部分。為了避免出現亂碼現象,編寫如下的UTF-8字符串截取函數

關于utf-8的原理請看 UTF-8 FAQ

UTF-8編碼的字符可能由1~3個字節組成, 具體數目可以由第一個字節判斷出來。(理論上可能更長,但這里假設不超過3個字節)第一個字節大于224的,它與它之后的2個字節一起組成一個UTF-8字符第一個字節大于192小于224的,它與它之后的1個字節組成一個UTF-8字符否則第一個字節本身就是一個英文字符(包括數字和一小部分標點符號)。

以前為某網站設計的代碼(也是現在用在首頁的長度截取的函數)

Code:<?php // Cut_Str;//$sourcestr 是要處理的字符串 //$cutlength 為截取的長度(即字數) function cut_str($sourcestr,$cutlength) { $returnstr=''; $i=0; $n=0; $str_length=strlen($sourcestr);//字符串的字節數 while (($n<$cutlength) and ($i<=$str_length)) { $temp_str=substr($sourcestr,$i,1); $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii碼 if ($ascnum>=224);//如果ASCII位高與224, { $returnstr=$returnstr.substr($sourcestr,$i,3); //根據UTF-8編碼規范,將3個連續的字符計為單個字符 $i=$i+3;;//實際Byte計為3 $n++;;//字串長度計1 } elseif ($ascnum>=192) //如果ASCII位高與192, { $returnstr=$returnstr.substr($sourcestr,$i,2); //根據UTF-8編碼規范,將2個連續的字符計為單個字符 $i=$i+2;;//實際Byte計為2 $n++;;//字串長度計1 } elseif ($ascnum>=65 && $ascnum<=90) //如果是大寫字母, { $returnstr=$returnstr.substr($sourcestr,$i,1); $i=$i+1;;//實際的Byte數仍計1個 $n++;;//但考慮整體美觀,大寫字母計成一個高位字符 } else;;;;;//其他情況下,包括小寫字母和半角標點符號, { $returnstr=$returnstr.substr($sourcestr,$i,1); $i=$i+1;;//實際的Byte數計1個 $n=$n+0.5 //小寫字母和半角標點等與半個高位字符寬... } } if ($str_length>$cutlength){ $returnstr = $returnstr . '...';//超過長度時在尾處加上省略號 } return $returnstr;

}

截取utf-8字符串函數

function FSubstr($title,$start,$len='',$magic=true) { /** *; powered by Smartpig *; mailto:d.einstein@263.net */

if($len == '') $len=strlen($title);if($start != 0){ $startv = ord(substr($title,$start,1)); if($startv >= 128) { if($startv < 192) { for($i=$start-1;$i>0;$i--) { $tempv = ord(substr($title,$i,1)); if($tempv >= 192) break; } $start = $i; } }}if(strlen($title)<=$len) return substr($title,$start,$len);$alen= 0;$blen = 0;$realnum = 0;for($i=$start;$i<strlen($title);$i++){ $ctype = 0; $cstep = 0; $cur = substr($title,$i,1); if($cur == '&') { if(substr($title,$i,4) == '&lt;') { $cstep = 4; $length += 4; $i += 3; $realnum ++; if($magic) { $alen ++; } } else if(substr($title,$i,4) == '&gt;') { $cstep = 4; $length += 4; $i += 3; $realnum ++; if($magic) { $alen ++; } } else if(substr($title,$i,5) == '&amp;') { $cstep = 5; $length += 5; $i += 4; $realnum ++; if($magic) { $alen ++; } } else if(substr($title,$i,6) == '&quot;') { $cstep = 6; $length += 6; $i += 5; $realnum ++; if($magic) { $alen ++; } } else if(preg_match('/&#(d+);?/i',substr($title,$i,8),$match)) { $cstep = strlen($match[0]); $length += strlen($match[0]); $i += strlen($match[0])-1; $realnum ++; if($magic) { $blen ++; $ctype = 1; } } }else{ if(ord($cur)>=252) { $cstep = 6; $length += 6; $i += 5; $realnum ++; if($magic) { $blen ++; $ctype = 1; } }elseif(ord($cur)>=248){ $cstep = 5; $length += 5; $i += 4; $realnum ++; if($magic) { $ctype = 1; $blen ++; } }elseif(ord($cur)>=240){ $cstep = 4; $length += 4; $i += 3; $realnum ++; if($magic) { $blen ++; $ctype = 1; } }elseif(ord($cur)>=224){ $cstep = 3; $length += 3; $i += 2; $realnum ++; if($magic) { $ctype = 1; $blen ++; } }elseif(ord($cur)>=192){ $cstep = 2; $length += 2; $i += 1; $realnum ++; if($magic) { $blen ++; $ctype = 1; } }elseif(ord($cur)>=128){ $length += 1; }else{ $cstep = 1; $length +=1; $realnum ++; if($magic) { if(ord($cur) >= 65 && ord($cur) <= 90) { $blen++; }else{ $alen++; } } } } if($magic) { if(($blen*2+$alen) == ($len*2)) break; if(($blen*2+$alen) == ($len*2+1)) { if($ctype == 1) { $length -= $cstep; break; }else{ break; } } }else{ if($realnum == $len) break; }}unset($cur);unset($alen);unset($blen);unset($realnum);unset($ctype);unset($cstep);return substr($title,$start,$length);}

標簽: PHP
主站蜘蛛池模板: 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 仿古建筑设计-仿古建筑施工-仿古建筑公司-汉匠古建筑设计院 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 亮点云建站-网站建设制作平台 | 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 五轴加工中心_数控加工中心_铝型材加工中心-罗威斯 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | 板框压滤机-隔膜压滤机配件生产厂家-陕西华星佳洋装备制造有限公司 | 贝壳粉涂料-内墙腻子-外墙腻子-山东巨野七彩贝壳漆业中心 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 快速卷帘门_硬质快速卷帘门-西朗门业 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 食品机械专用传感器-落料放大器-低价接近开关-菲德自控技术(天津)有限公司 | 范秘书_懂你的范文小秘书 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 |