php+中午截取,php中截取中文字符串的代码小结
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。
1. 截取GB2312中文字符串
< ?php
//截取中文字符串
function mysubstr($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;
}
?>
2. 截取utf8编码的多字节字符串
< ?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
?>
3. UTF-8、GB2312都支持的汉字截取函数
< ?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
if($code == 'UTF-8')
{
$pa = "/[\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]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
return join('', array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';
for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}
$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312');
?>
4. BugFree 的字符截取函数
< ?php
/**
* @package BugFree
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* Return part of a string(Enhance the function substr())
*
* @author Chunsheng Wang
* @param string $String the string to cut.
* @param int $Length the length of returned string.
* @param booble $Append whether append "...": false|true
* @return string the cutted string.
*/
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) < = $Length )
{
return $String;
}
else
{
$I = 0;
while ($I < $Length)
{
$StringTMP = substr($String,$I,1);
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast[] = $StringTMP;
}
$StringLast = implode("",$StringLast);
if($Append)
{
$StringLast .= "...";
}
return $StringLast;
}
}
$String = "17test.info 走在中国自动化测试的前沿";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>
php+中午截取,php中截取中文字符串的代码小结相关推荐
- Golang中获取中文字符串的子串字符位置及截取子串
Golang中获取中文字符串的子串字符位置及截取子串 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...
- java字符串剪切函数,java用substring函数截取string中一段字符串,substringstring
java用substring函数截取string中一段字符串,substringstring from http://www.cnblogs.com/laiweili/archive/2012/11 ...
- 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?
在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0) 编辑 收藏 所属分类: ASP.N ...
- 按照拼音对数组中的中文字符串排序的算法
按照拼音对数组中的中文字符串排序的算法,不是很难,这里直接放上代码,Demo去最下面找: 注:里面用到一个叫George的牛人写的中文转拼音首字母的函数pinyinFirstLetter,因为内容实在 ...
- 如何提取代码中的中文字符串
前言 在一般情况下,程序中的中文字符串都是写在某个文件中读取(例如json),但是大部分时候我们都是直接写入到代码中,这个时候如果我们想把字符串提取出来就需要一个一个去找,或者通过IDE提供的字符串匹 ...
- oracle 截取字符串中间_oracle截取字段中的部分字符串
使用Oracle中Instr()和substr()函数: 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为: instr(sourceString,de ...
- 解决 python用 xlsxwrite 向excel 中写入中文字符串变量 报错
问题: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 7: ordinal not in range(12 ...
- qt接收服务器信息中文乱码,在qt提取lineedit中的中文字符串,通过tcp通信时,服务器接收乱码的情况,解决办法...
使用的是qt5.9版本,在取lineedit中的中文字符转成字符串,后转成char*的过程中,在仅仅使用string str.tolocal8bit,是不起作用的,转换不了格式,输出的char*数组还 ...
- java字符截取_java中截取字符串方法
Java 简介 substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直 ...
最新文章
- AI开学第一课!CMU深度学习秋季课程开课了(附PPT 、视频)
- 在Windows下编译WebRTC
- php-URL方法下载远程图片
- Sentry : Spark-sql 读取hive数据 权限问题
- anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾
- Windows下将jar包封装成服务程序
- 以前收集到的PHP总结笔记
- 如何在MSWord中加入MSAgent
- 循环输出100以内的素数
- 以文会友,以书传情—山西省侨商联合会召开书画艺术委员会成立大会
- 财会法规与职业道德【5】
- java根据经纬度获取地址
- scikit-learn中的KMeans聚类实现
- Ubuntu解决键盘错乱与图形化切换
- Markdown中空格和换行
- CNN数据集——自己建立数据集要点
- 文件传输工具Xftp5安装图解
- 金融科技大数据产品推荐:Hyperchain--国产自主可控的企业级联盟区块链平台
- 固定电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号)
- Android 百度地图SDK 实现获取周边位置POI详解
热门文章
- 贪心算法——洛谷(P4995)跳跳!
- mysql between 等于_MySQL中BETWEEN子句的用法详解
- zabbix设置mysql登陆免报警_zabbix3.0.2 监控mysql服务down的时候不触发报警的问题修复...
- 33个PPT下载丨2018年PostgreSQL中国技术大会PPT
- 上海理工大学:用数字技术打响智慧抗疫信息战
- 为了减少代码复杂度,我将if-else升级为面向状态编程
- MySQL数据库事务隔离性的实现
- 混合编程:如何用python11调用C++
- CSS开发过程中的20个快速提升技巧
- 【华为云技术分享】漫谈LiteOS-Huawei_IoT_Link_SDK_OTA 开发指导