- 浏览: 61877 次
- 性别:
- 来自: 北京
最新评论
自己实现php UTF8中文字符串截取
- 博客分类:
- 笔试
header("Content-type: text/html; charset=utf-8"); function my_substr($str,$begin,$length){ $i = $begin; $result=""; while($length > 0){ if([color=red]ord($str[$i])>127[/color]){ $result .= substr($str,$i,3); $i = $i+3; }else{ $result .= substr($str,$i,1); $i++; } $length--; } return $result; } $chinese = "中a国people"; echo "<br>".my_substr($chinese,0,3);
输出结果是:中a国
说明:
ord 是 对字符去assic值。
chr 是 对assic取字符。
为什么判断assic大于127。
这里是ASSIC码表
http://www.asciitable.com/
计算机中最开始只有ASSIC编码,用来表示字符。一个ASSIC字符用一个BYTE表示。所以ASSIC最多就只有256种组合。对于英文是够用了,中文,日文,韩文等亚洲语种就不够了。
那么只能考虑用多个BYTE表示一个中文汉字,比如GB2312 就是用2个字节表示一个汉字。在windows中用笔记本新建一个TXT保存为ASSIC,如果你是简体中文操作系统,TXT中的中文就是一GB2312来保存的。上面的截取字符串的程序$result .= substr($str,$i,3);中的3就要改成2.同时别忘了修改header。而无论GB2312 还是UTF8 他们表示A-Z等ASSIC 128以前的都是一样的,是一位BTYE表示,是变长编码的。所以可以用ASSIC判断他们是不是中文。
写的可能比较乱。有需要的谨慎阅读。
发表评论
-
求链表中间节点的值,检测链表的环
2012-07-27 14:19 806求链表中间节点的值,检测链表的环 int loop(st ... -
实习前记
2012-07-16 15:27 696经过回来一周的找工作,总体感觉就是很累啊,每天东跑西颠的。面了 ... -
php函数参数列表
2012-05-11 16:50 1400[size=medium] 1.直接传值 function ... -
php的ob_flush和flush
2012-05-10 21:20 1069php.ini中 output_buffering = of ... -
php读文件的4中方法。
2012-05-10 20:38 871fopen $fp = fopen("downl ... -
百度笔试算法题一道。
2012-05-10 15:02 932一个数组a[0-n-1],a[0-mid]和a[mid+1-n ... -
C与C++动态分配,释放内存的区别
2012-05-08 17:30 160221. malloc()函数 1.1 malloc的 ... -
nginx rewrite
2012-05-04 11:23 0http://blog.cafeneko.info/2010/ ... -
php magic method
2012-05-04 11:16 859php的魔术方法总结 php的魔术方法都是和类有关的。 ... -
诡异的 shell 08 bug
2012-04-30 01:11 724v=08 echo $v shell里以0开头的都会把它当作8 ... -
排序相关
2012-04-22 16:01 0排序分类 内排序: 交换式排序: ... -
php string
2012-04-22 11:33 854一.字符串类型 php一共有8中数据类型 ... -
简单的树的递归、非递归创建,前序中序后序遍历
2012-04-21 10:03 1034c语言写着还挺带感 #in ... -
php 深度优先递归输出路径下所有文件
2012-04-19 21:27 1491<?php $dir = " ... -
简单的栈
2012-04-19 21:14 679#include <stdio.h> #de ... -
简单的循环队列
2012-04-19 21:13 780#include <stdlib.h> ... -
单链表删除一个节点
2012-04-19 21:10 9813有头结点的情况,附加一个逆置 #include <s ... -
KMP与BF,实现了一个非主流next函数
2012-04-19 20:16 899#include <stdlib.h> #i ... -
ip过滤问题
2012-03-22 21:09 0假设有很多段ip段属于教育网的,如何尽快辨别一用户ip是否属于 ... -
求三叉树高度
2012-03-18 17:05 3054有12345个结点的满3叉数的高度为_____写出计算过程 ...
相关推荐
字符串截取,支持中文、UTF8和其他编码。
本文实例讲述了php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8用法。分享给大家供大家参考,具体如下: /* *gb2312中文字符串截取 */ function substr_for_gb2312($str,$start,$len=null) { $...
NULL 博文链接:https://onestopweb.iteye.com/blog/2394281
在《学习PHP&MYSQL之——字符编码篇(一)》中介绍了Unicode与UTF-8的转换关系,总结了一个UTF-8的... /* $str 是待截取的字符串 $len 是截取的字符数 */ function utf8sub($str,$len) { if($len <= 0){ return ”;
在PHP程序开发中,经常会执行字符串的截取操作,比如输出信息列表时,标题不宜过长,打印文章摘要时,也要执行一系列的字符串截取操作。遇到这些需求时,我们经常会想到使用substr()方法来实现,substr()对全英文...
一、中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 实例: 复制...
支持多种编码的中文字符串截取函数! 复制代码 代码如下:/* * @todo 中文截取,支持gb2312,gbk,utf-8,big5 * * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int ...
复制代码 代码如下:mb_strimwidth($str, $start, $width, $tail, $encoding) 按宽度截取字符串$str 要截取的字符串$start 从哪个位置开始截取,默认是0$width 要截取的宽度$tail 追加到截取字符串后边的字符串,常用...
本文主要介绍了php自定义截取中文字符串的方法,具有很好的参考价值,下面跟着小编一起来看下吧
mb_strlen 可以根据字符集计算长度,比如utf8的中文计数为1,但这不符合微博字数限制需求,中文必须计算为2才可以。google了下,找到一个discuz中截取各种编码字符的类,改造了下,已经测试通过.其中参数$charset 只...
php 截取utf-8格式的字符串 php中,我们经常需要截取字符串。英文字符占用一个字节,中文字符占用两个字节,但中文字符占用两个字节是相对于GBK编码而言但是在时下国际流行的UTF8编码中,一个中文字符占用3个字节。...
//utf-8编码的字符串echo mb_substr($str, 0, 2, ‘utf-8’); //输出 我a[/code 中英混合也完全没有问题。 友情提示 使用的时候要注意php文件的编码,和网页显示时的编码。 使用这个mb_substr方法要事先知道字符串...
复制代码 代码如下:function utf8_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($...
NULL 博文链接:https://onestopweb.iteye.com/blog/2328758
截取字符串 <?php $string=”2006年4月我又长大了一岁!”; echo substr($string,1).”…”; //截取字符串 function SubstrGB($in,$num) { $pos=0; $out=””; while($pos $c=substr($in,$pos,1); xss=...
大家在自己的程序中相信都会... * 支持中文字符串截取 */ function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ switch($charset){ case 'utf-8':$char_len=3;break; case 'UTF8':$char_
本篇文章是对使用substr截取UTF-8中文字符串出现乱码的问题进行了详细的分析介绍,需要的朋友参考下