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

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

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

瀏覽:94日期: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
主站蜘蛛池模板: 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 123悬赏网_发布悬赏任务_广告任务平台 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 沈阳激光机-沈阳喷码机-沈阳光纤激光打标机-沈阳co2激光打标机 | 威客电竞(vk·game)·电子竞技赛事官网 | jrs高清nba(无插件)直播-jrs直播低调看直播-jrs直播nba-jrs直播 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 暴风影音| 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | WTB5光栅尺-JIE WILL磁栅尺-B60数显表-常州中崴机电科技有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 合肥办公室装修 - 合肥工装公司 - 天思装饰| 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 成都思迪机电技术研究所-四川成都思迪编码器| 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 空冷器|空气冷却器|空水冷却器-无锡赛迪森机械有限公司[官网] | 耐磨陶瓷管道_除渣器厂家-淄博浩瀚陶瓷科技有限公司 | 余姚生活网_余姚论坛_余姚市综合门户网站| 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 合肥花魁情感婚姻咨询中心_挽回爱情_修复婚姻_恋爱指南 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 |