方法一:

/**

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

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

 * 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. 理解JavaScript 的原型属性

    1.原型继承 面向对象编程可以通过很多途径实现.其他的语言,比如 Java,使用基于类的模型实现: 类及对象实例区别对待.但在 JavaScript 中没有类的概念,取而代之的是一切皆对象.JavaS ...

  2. css伪类选择器详细解析及案例使用-----伪元素

    伪元素:(css3中将所有伪元素前变成了两个冒号,即::first-letter.::first-line.::before.::after.::selection.目的是为了区分伪元素与伪类.对于I ...

  3. Sys.WebForms.PageRequestManagerParserErrorException:无法分析从服务器收到的消息

    我引起此原因的功能如下: 在aspx页面添加按钮 JS方法: function downPPT() { $("#Btn_DownPPT").click();    } <bo ...

  4. hdu1054 树状dp

    B - 树形dp Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:10000KB     64bit ...

  5. C#界面设计疑问

    1.就是想做一个类似下面界面的窗体,上面一排按键,点击一个下面对应改变一次界面的内容,这是如何实现的呢 ...是不是通过,比如这里有四个按键,然后使用4个大小相同的面板,每个面板内容不同.按一个按键, ...

  6. photoSlider-html5原生js移动开发轮播图-相册滑动插件

    简单的移动端图片滑动切换浏览插件 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" hre ...

  7. android 监听app进入后台以及从后台进入前台

    package com.pinshang.base; import com.pinshang.common.CommonValue; import com.pinshang.investapp.Ent ...

  8. JAVA语言对比C++语言的几个优点和自身的关键特性

    之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别.因水平有限,某些内容可能太过片面,欢迎指正和讨论. JAVA语言在设计上很好地借鉴 ...

  9. DataTables获取表单输入框数据

    $(document).ready(function() { var table = $('#example').DataTable(); $('button').click(function() { ...

  10. iOS开发笔记--什么时候调用layoutSubviews

    iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...