方法一:

/**

  +----------------------------------------------------------

 * 功能:字符串截取指定长度

 * leo.li hengqin2008@qq.com

  +----------------------------------------------------------

 * @param string    $string      待截取的字符串

 * @param int       $len         截取的长度

 * @param int       $start       从第几个字符開始截取

 * @param boolean   $suffix      是否在截取后的字符串后跟上省略号

  +----------------------------------------------------------

 * @return string               返回截取后的字符串

  +----------------------------------------------------------

 */

function cutStr($str, $len = 100, $start = 0, $suffix = 1) {

    $str = strip_tags(trim(strip_tags($str)));

    $str = str_replace(array("\n", "\t"), "", $str);

    $strlen = mb_strlen($str);

    while ($strlen) {

        $array[] = mb_substr($str, 0, 1, "utf8");

        $str = mb_substr($str, 1, $strlen, "utf8");

        $strlen = mb_strlen($str);

    }

    $end = $len + $start;

    $str = '';

    for ($i = $start; $i < $end; $i++) {

        $str.=$array[$i];

    }

    return count($array) > $len ? ($suffix == 1 ? $str . "&hellip;" : $str) : $str;

}

方法二:

header("Content-type:text/html; charset=utf8");

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="我slskjd!fl是总那地方拉伸款到即发";

echo cut_str($str, 8, 5);

php字符串标点等字符截取不乱吗 封装方法的更多相关文章

  1. Android(Java) 字符串的常用操作,获取指定字符出现的次数,根据指定字符截取字符串

    /*这是第100000份数据,要截取出100000*/ String s="这是第100000份数据"; String s1 = s.substring(s.indexOf(&qu ...

  2. mysql根据字符截取字符串(总结)

    mysql根据字符截取字符串(总结) 1.1 前言   为结合自己平常查资料的习惯,我会先给出例子,然后再对相关知识进行详解.该案例使用到的函数为:SUBSTRING_INDEX 1.2 需要实现的实 ...

  3. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值:      场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示 ...

  4. php 截取字符串第一个字符,截取掉字符串最后一个字符的方法

    php 截取字符串第一个字符,php截取掉字符串最后一个字符的方法: $frist = substr( $c_url, 0, 1 ); $delete_last = substr(base_url() ...

  5. 截取Excel字符串的部分字符

    截取Excel字符串的部分字符 我们可以使用Mid.Left.Right等函数从长字符串内获取一部分字符.  ①LEFT函数:  LEFT(text,num_chars)  Text是包含要提取字符的 ...

  6. Android中如何截取字符串中某个字符之前或之后的字符串

    代码改变世界 Android中如何截取字符串中某个字符之前或之后的字符串 //截取#之前的字符串 String str = "sdfs#d"; str.substring(0, s ...

  7. C# - 怎么截取字符串中指定字符及其后面的字符

    方法1:去掉空格以及后面的字符   //怎么截取让date的值为"2011/12/9",即去掉空格以及后面的字符   string date = "2011/12/9 2 ...

  8. 第10章 Shell编程(2)_字符截取命令

    2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认 ...

  9. JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符

    package com.pb.demo.packclass.demo1; import java.util.HashSet; /** * 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 ...

随机推荐

  1. JSP实现分页功能

    分页须知知识点: (1)JDBC2.0的可滚动结果集. (2)HTTP GET请求. 一.可滚动结果集   Connection con  = DriverManager.getConnection( ...

  2. Android 实时文件夹

    实时文件夹是一种用来显示由某个ContentProvider提供的数据信息的桌面组件.要创建一个实时文件夹,必须要有两个方面的支持. 1,要定义一个用来创建实时文件夹的Activity. 2,所指定数 ...

  3. CSS结构伪类E:first-child/last-child/only-child/empty

    E:first-child解释:E的父元素的第一个子元素正好是E,给这个E定义样式 E:last-child解释:E的父元素的最后一个子元素正好是E,给这个E定义样式 E:only-child解释:E ...

  4. C# 标签打印示例 1

    初次写博客,有哪些不足的地方,还请多多指点,给予建议,谢谢! 如若想要源码,请留言.        本实例是在Webservice 中通过excel做模板来打印标签.具体需求是:一个订单一页纸打印4行 ...

  5. .net中的特性

    本文来之:http://hi.baidu.com/sanlng/item/afa31eed0a383e0e570f1d3e 在一般的应用中,特性(Attribute,以称为属性)好像被使用的不是很多. ...

  6. 使用DataReader

    string sqlStr="select * from tb_news"; SqlCommand myCmd=new SqlCommand(sqlStr,myConn); myC ...

  7. window.dialogArguments的使用

    <HTML> <HEAD> <TITLE>showModelessDialogEX.htm</TITLE> <SCRIPT> var sUs ...

  8. Linux设置自启动

    启动大致过程:bootloader-->内核-->内核模块-->挂载根文件系统-->init进程 init进程是非内核进程中第一个被启动运行的,因此它的进程编号PID的值总是1 ...

  9. C#按键打开文件选择对话框,并把选择好的路径保存/显示到textBox

    1.选择文件夹 FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.SelectedPath = "D:";//默认路 ...

  10. UVa10651(记忆化搜索)

    题意: 给一串-和o组成的字符串,你可以把“-oo"变成”o--",可以把“oo-”变成“--o",问最后最少有多少个o. 状态压缩 ,记忆化搜索 code: #incl ...