php截取中文字符串函数实例_php技巧

本文实例讲述了php截取中文字符串函数。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:

<?php
//中文字符串截取
function substr_zh($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))."...";
   //array_slice()在数组中根据条件取出一段值,参数(数组,开始位置,[长度])
  }else{
   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){
    //ord():返回字符串第一个字符的ASCII值
    //substr():返回字符串的一部分
     $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;
 }
}
$string ="顶置车顶起困境檲上盯协押畏奇才趄肯困楞右脚可爱有";
echo substr_zh($string,10,0,'gb2312');
?>

希望本文所述对大家的php程序设计有所帮助。

时间: 2025-01-20 08:41:07

php截取中文字符串函数实例_php技巧的相关文章

php截取中文字符串函数实例

 这篇文章主要介绍了php截取中文字符串函数,实例分析了php针对中文字符串操作的技巧,注意utf-8与gb2312编码的转换问题,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php截取中文字符串函数.分享给大家供大家参考.具体实现方法如下:   代码如下: <?php //中文字符串截取 function substr_zh($string,$sublen,$start=0,$code='UTF-8'){ if($code=='UTF-8'){ $pa = "/[x

THINKPHP截取中文字符串函数实例代码

在项目开发中,我们常常会遇到英文.中文等字符串截取问题,比如说新闻列表页面需要新闻内容简介,这就要用到字符串截取了. 下面就为大家分享一个THINKPHP中已经准备好的字符串截取函数. # 函数解释: msubstr($str, $start=0, $length, $charset="utf-8″, $suffix=true) /* $str:要截取的字符串 $start=0:开始位置,默认从0开始 $length:截取长度 $charset="utf-8″:字符编码,默认UTF-8

php mb_substr()函数截取中文字符串应用示例_php技巧

substr()函数用来截取字符串,但是对于中文字符会出现问题,而mb_substr()和mb_strcut这两个函数可以,用法与substr()相似,只是在函数最后要加入多一个参数,以设定字符串的编码,使用这两个函数需要在php.ini中把php_mbstring.dll打开. <?php header("content-type:text/html; charset=utf-8"); $string = "你好我好大家好"; echo strlen($st

php 解决substr()截取中文字符乱码问题_php技巧

在php中如果我要用substr()截取字符串全英文的没问题,如果包括有中文或英文就会悲剧了,但大家也 别切我们可以使用其它办法来解决. php截取中文字符串出现乱码,这是最近发现的事情,先前我曾经写过一篇关于自动生成meta信息的文章,那篇关于利用php截取文章前多少字作为description方法,但是出现了IE6无法加载CSS的现象,这里做一个补充. 首先要明确这么一个问题,之所以会出现IE6偶尔无法加载CSS的现象,是因为文件出现了乱码,导致后面的加载CSS的link无法被IE6正确解析

thinkphp中的截取中文字符串函数msubstr()用法

看了很多教程说的是thinkphp可以在模板中直接使用msubstr方法来截取中文字符串,可是零度使用过程中却发现根本无法使用,百度一下知道,原来是因为think文件夹里没有放这个函数,现在贴出来,以便没有的网友直接拿过去用. 问题:使用ThinkPHP字符截取报错"Call to undefined function msubstr()" 解决方案: 把以下代码复制到ThinkPHP/Common/function.php文件中,我说的是3.23版本,其他版本复制到到公用函数文件里就

PHP截取中文字符串函数总结

常用的php函数 strstr(string,string)            //从前面第一次出现某个字符串的地方截取到最后 strrchr(string,string)         //从某个字符串从最后出现的位置截取到结尾 strpos(string,string[,int])  //某个字符串第一次出现的位置 strrpos(string,string)      //某个字符串最后一次出现的位置 substr(string,int[,int])    //从指定位置开始截取字符

PHP截取中文字符串的问题_PHP编程

以下代码试用于GB2312编码,截取中文字符串是PHP中一个头疼的问题,解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况.但中英文混合.特殊符号等问题总是存在,现在写一个比较全面的,仅供参考: 程序说明: 1. len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些 2. 如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数 3. 特别适用于用htmlspecialchars()进行过编码的字符串 4. 能正确处理GB2312中

THINKPHP截取中文字符串函数

THINKPHP中已经准备好的字符串截取函数. ThinkPHP 官方扩展的 msubstr 方法其实挺好的,但有以下几个问题: 1,调用的时候会多次判断,包括2次判断是否自带了 mb_substr 和 iconv_substr 函数: 2,无论是否超出长度,如果有 $suffix=true 都会追加省略号,这个不太合理: 介于以上两点,并且在确保自己的服务器支持 mb_substr 函数.并且都是 utf-8 编码的情况下,我们其实可以自己在 Common/common.php(3.2 版本中

PHP获取当前页面URL函数实例_php技巧

本文实例讲述了PHP获取当前页面URL函数实例,分享给大家供大家参考.具体实现方法如下: 在PHP中,没有默认的Function来获取目前所在页面的URL,所以今天就向大家介绍一个在PHP获取当前页面完整URL的PHP函数. 函数代码如下,调用时只需要使用 curPageURL() 就行啦: 复制代码 代码如下: /* 获得当前页面URL开始 */ function curPageURL() {     $pageURL = 'http';     if ($_SERVER["HTTPS&quo