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

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

舊題新貌:PHP截取中文字符串的問題

瀏覽:62日期:2024-02-02 18:27:58

以下代碼試用于GB2312編碼,截取中文字符串是PHP中一個頭疼的問題,解決方法是根據值是否大于等于128來判斷是否是雙字節字符,以避免出現亂碼的情況。但中英文混合、特殊符號等問題總是存在,現在寫一個比較全面的,僅供參考:

程序說明:1. len 參數以中文字符為標準,1len等于2個英文字符,為了形式上好看些2. 如果將magic參數設為false,則中文和英文同等看待,取絕對的字符數3. 特別適用于用htmlspecialchars()進行過編碼的字符串4. 能正確處理GB2312中實體字符模式(𖰰)

程序代碼:

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

//判斷起始為不正確位置if($start > 0){ $cnum = 0; for($i=0;$i<$start;$i++) { if(ord(substr($title,$i,1)) >= 128) $cnum ++; } if($cnum%2 != 0) $start--; unset($cnum);}

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(substr($title,$i,6) == '&#039;') { $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)>=128) { $cstep = 2; $length += 2; $i += 1; $realnum ++; if($magic) { $blen ++; $ctype = 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);}

呵呵,一會兒把UTF-8編碼下的代碼也貼出來

標簽: PHP
主站蜘蛛池模板: 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 船老大板材_浙江船老大全屋定制_船老大官网 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 工业风机_环保空调_冷风机_工厂车间厂房通风降温设备旺成服务平台 | 江西自考网-江西自学考试网| EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 酸度计_PH计_特斯拉计-西安云仪| 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 |