PHP截取中英文字符串
来源:互联网 发布:mac怎么转换音频格式 编辑:程序博客网 时间:2024/04/30 07:01
今天在写网站的时候用到了字符串的中英文截取,特此总结了一下:
1.根据网站的中文编码格式,采取不同的自定义函数。
1)PHP截取gb2312中英文字符串
<span style="font-family:Courier New;font-size:14px;"><span style="font-family:SimHei;font-size:14px;"><?php //PHP截取gb2312中文字符串/** * PHP截取gb2312中文字符串 * @param $str 被截取的字符串 * @param $start 起始长度 * @param $len 截取长度 * @param $suffix 后缀字符串 */function gbk_str($str, $start, $len,$suffix=""){ $tmpstr = ""; $n=0; $length = $start+$len; echo $length."<br/>"; for($i=0; $i<strlen($str); $i++,$n++){ $value=ord(substr($str,$i,1)); echo $value."--<br/>"; if($value>0xa0){ if($n>=$start && $n<$length){ $tmpstr .= substr($str,$i,2); } $i++; }else{ if($n>=$start && $n<$length){ $tmpstr .= substr($str,$i,1); } } } return $tmpstr.$suffix;}//测试案例$str = "测试字符串'abcdefg";echo gbk_str($str,2,9,"...");</span></span>
显示效果:
字符串'abcde...
2)PHP截取utf-8中英文字符串
原理:
UTF-8编码的字符可能由1~3个字节组成,
具体数目可以由第一个字节判断出来。
第一个字节大于239小于248的,它与它之后的3个字节组成一个UTF-8字符
第一个字节大于223小于240的,它与它之后的2个字节一起组成一个UTF-8字符
第一个字节大于191小于224的,它与它之后的1个字节组成一个UTF-8字符
否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)。
注意:小写字母和半角标点等与半个高位字符宽
<span style="font-family:Courier New;font-size:14px;"><span style="font-family:SimHei;font-size:14px;">/** * PHP截取utf-8中文字符串 * @param $str 被截取的字符串 * @param $start 起始长度 * @param $len 截取长度 * @param $suffix 后缀字符串 */function utf8_str($str,$start,$len,$suffix=""){ $tmpstr = ""; $n = 0; $i = 0; $length = $start+$len; while($i<strlen($str)){ $value = ord($str[$i]); if($value >= 65 && $value <= 90){//大写字母 if($n>=$start && $n<$length){ $tmpstr .= substr($str,$i,1); } $n++; $i++; } elseif($value >= 192 && $value <= 223){ if($n>=$start && $n<$length){ $tmpstr .= substr($str,$i,2); } $n++; $i+=2; } elseif($value >= 224 && $value <= 239){ if($n>=$start && $n<$length){ $tmpstr .= substr($str,$i,3); } $n++; $i+=3; } elseif($value >= 240 && $value <= 247){ if($n>=$start && $n<$length){ $tmpstr .= substr($str,$i,4); } $n++; $i+=4; } else{//其他情况下,包括小写字母和半角标点符号 if($n>=$start && $n<$length){ $tmpstr .= substr($str,$i,1); } $n += 0.5; $i++; } } if($n<$len){ return $tmpstr; }else{ return $tmpstr.$suffix; }}//测试案例$str = "测试字符串'abcdefg";echo utf8_str($str,2,9,"...");</span></span>
显示效果:
字符串'abcdefg...
2.使用内置的PHP字符串截取函数,mb_substr()
1.要确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从PHP安装目录extensions里拷入Windows/system32里面。
2.windows下的PHP目录中找到配置文件php.ini并打开,搜索mbstring.dll,找到;extension=php_mbstring.dll把前面的;号去掉
mb_substr — 获取字符串的部分
说明:
string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。
参数:
str
从该 string 中提取子字符串。
start
str 中要使用的第一个字符的位置。
length
str 中要使用的最大字符数。 If omitted or NULL is passed, extract all characters to the end of the string.
encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。
返回值
mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。
函数如下:
<span style="font-family:Courier New;font-size:14px;">function mystr($str,$start,$len,$charset,$suffix){ $tmpstr=""; $tmpstr .= mb_substr($str,$start,$len,$charset); return $tmpstr."...";}$str1 = "这是一个悲伤的故事abcdefg";echo mystr($str1,2,9,"utf-8","...");</span>
- PHP截取中英文字符串
- php如何截取中英文字符串
- php截取中英文混合字符串
- iconv_substr截取php中英文混排字符串
- iconv_substr截取php中英文混排字符串
- php截取中英文混合字符串方法
- php混合字符串长度和截取 中英文
- PHP-UTF8中英文截取字符串实例
- php中英文字符串截取函数(包括html)
- 中英文字符串截取
- 中英文截取字符串
- 截取中英文混合字符串
- JavaScript截取中英文字符串
- java截取中英文字符串
- 中英文字符串截取
- 截取中英文混合字符串
- 中英文混合字符串截取
- 截取中英文字符串长度
- 《失控》(凯文·凯利)阅读分享
- Eclipse GEF
- oracle与sqlserver关于列别名的一点区别
- Win10 Bash初体验
- tomcat配置文件server.xml详解
- PHP截取中英文字符串
- AndroidStudio2.0配置NDK
- 每天一个linux命令(30): chown命令
- HDU 3613 Best Reward(扩展kmp)
- 使用__slots__
- Mysql几种索引类型的区别及适用情况
- 初学者对于结构体内存对齐与补齐的理解
- RAID磁盘利用率详解
- 使用vmware玩openwrt