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
*/ 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 = ''
echo cut_str($str, 8, 0, 'gb2312');
?>
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($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;
}
}
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 <wwccss@263.net>
* @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 = "CodeBit.cn -- 简单、精彩、通用";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>
版权声明:原创作品,欢迎转载,转载时请务必以超链接形式标明文章原始地址、作者信息和本声明。
原文地址:http://www.ccvita.com/27.html
PHP 截取字符串专题相关推荐
- Excel中如何截取字符串中指定字符后的部分字符
1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示:复制单元 ...
- CSS截取字符串,兼容浏览器
今天在经典论坛看到有同学问到CSS截取字符多余省略号代替的求助且要兼容FF... 这个的确是个比较头痛的问题,现在我在的公司都是程序截取显示省略符的.兼容是没问题,但在中文和数学或字母混排时,就会有点 ...
- Swift4 String截取字符串
var str1 = "AlexanderYeah";// 1 截取字符串的第一种方式 // prefix 截取前3个字符串 var str2 = str1.prefix(3); ...
- smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty。...
smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty. function smarty_modifier_trunca ...
- ASP.NET技巧:两个截取字符串的实用方法
两个截取字符串的实用方法(超过一定长度自动换行) 1/** <summary> 2 /// 截取字符串,不限制字符串长度 3 /// </summary& ...
- Java --循环截取字符串
2019独角兽企业重金招聘Python工程师标准>>> 最近做工程时,遇到需要循环截取字符串的情况,写一篇日记,记录处理方法. 需求 从数据库取回来的数据格式如下: 西南-零起点-香 ...
- shell截取字符串方法
shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...
- sql和access中截取字符串的区别
一向对数据库不熟悉,今天又遇到简单而又被忽略的问题--字符串的截取. 在Excel处理数据过程中,我们常用substring,left,mid,right来截取字符:在.NET编程中,我们常用subs ...
- 用jstl截取字符串
2019独角兽企业重金招聘Python工程师标准>>> 用jstl截取字符串 jstl以前在jsp页面截取字符串时都是用Java表达式,感觉在jsp页面用多了Java表达式不是很好( ...
最新文章
- 关于服务器端控件的attributes属性的奇怪问题
- 闭包(匿名函数) php
- 记录一下ui设计中的网站配色
- iReport 5.添加修改删除jdbc
- PostgreSQL扫盲教程
- 在ASP.NET MVC中使用DropDownList
- c语言出勤率随机,c
- 查找一个数据库内的所有表的行数
- 创业项目筹备了两个多月,确实不容易
- Linux Shell编程(2)——第一个shell程序
- 用户输入和命令行参数
- Microsoft Visual Studio 6.0 安装后,弹出登录Visual SourceSafe Login弹出框!
- 汇编观察a++和++a
- 学成在线(一)项目介绍
- STM32单片机全自动锂电池容量电量检测放电电流电池电压ACS712
- 晶振匹配电容如何计算?--转载
- 中西方对时间的差异_中西方时间表达的认知差异
- 选课系统 - 数据库查询(一)
- 点集配准技术(ICP、RPM、KC、CPD)
- 二维码编码库qrencode
热门文章
- php jwt token过期时间,php – 动态设置laravel jwt的到期时间
- http 错误 404.0 - not found_python3从零学习-5.10.8、http.client—HTTP 协议客户端
- Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
- Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)
- QueryPerformanceFrequency用法--Windows高精度定时计数
- qt能使用logback_Spring boot使用logback实现日志配置
- android 蓝牙 鼠标 app_Razer 雷蛇 那伽梵蛇 Pro 专业版 无线蓝牙鼠标 899元
- 【Vue版】实现拖拽、排序效果(注意,这个方法在chrome谷歌浏览器上面不适用,dragend会情不自禁触发drag事件先执行,有点像浏览器的一个bug)
- 【舒工强烈推荐】命令添加Git远程仓库
- 玻璃和水晶PBR纹理材质预设