PHP substr(),mb_substr()及mb_strcut的区别和用法

原创 2011年01月12日 13:10:00

PHP substr()函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr() /mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是 一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。

举个例子:
<?php
echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>
输出:这样一来我的字
<?php
echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>
输出:这样一
从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象……

mbstring 函数的说明:


php的mbstring扩展模块提供了多字节字符的处理能力,平常最常用的就是用mbstring来切分多字节的中文字符,这样可以避免出现半个字符的情况,由于是php的扩展,它的性能也要比一些自定义的多字节切分函数要好上一些。

mbstring extension提供了几个功能类似的函数,mb_substr和mb_strcut,看看手册上对它们的解释。

mb_substr
mb_substr() returns the portion of str specified by the start and length parameters.

mb_substr() performs multi-byte safe substr() operation based on number of characters. Position is counted from the beginning of str. First character's position is 0. Second character position is 1, and so on.

mb_strcut
mb_strcut() returns the portion of str specified by the start and length parameters.

mb_strcut() performs equivalent operation as mb_substr() with different method. If start position is multi-byte character's second byte or larger, it starts from first byte of multi-byte character.

It subtracts string from str that is shorter than length AND character that is not part of multi-byte string or not being middle of shift sequence.

再举个例子,有一段文字, 分别用mb_substr和mb_strcut来做切分:

PLAIN TEXT
CODE:
<?php
$str = '我是一串比较长的中文-www.webjx.com';

echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');

echo "<br>";

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>
输出结果如下:

mb_substr:我是一串比较
mb_strcut:我是
 

 

php函数substr、mb_substr、mb_strcut截取中文比较

一、函数说明     substr、mb_substr、mb_strcut这三个函数都用来截取字符串,所不同的是:substr是最简单的截取,无法适应中文;mb_substr是按字来切分字符串,而mb...
  • mlks_2008
  • mlks_2008
  • 2013年01月21日 09:45
  • 13943

mb_substr使用中出现的一点问题

$str="探访韩国坡州志愿军墓地 墓碑上刻\"无名人\""; var_dump(substr($str,0,48)); var_dump(mb_substr($str...
  • lwx2615
  • lwx2615
  • 2013年12月27日 11:50
  • 2205

Thinkphp内置的一个中英文字符串截取函数,显示省略号

Thinkphp内置了一个可以媲美smarty的模板引擎,给我们带来了很大的方便。调用函数也一样,可以和smarty一样调用自己需要的函数,而官方也内置了一些常用的函数供大家调用。 比如今天我们说的截...
  • lhw135864
  • lhw135864
  • 2014年02月24日 10:18
  • 1850

PHP中字符串截断函数mb_strimwidth、mb_substr、mb_strcut区别

今天在弄个人的Wordpress博客的时候,遇到一个字符串截断的问题。 在原来的主题样式里面,用的是mb_substr函数进行的字符串截断。发现有问题,这个函数将一个英文字符和一个中文字符同等对...
  • adermxl
  • adermxl
  • 2012年05月21日 11:59
  • 1595

substr(),mb_substr()及mb_strcut的区别和用法

substr(),mb_substr()及mb_strcut的区别和用法 substr()函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_subs...
  • huyanping
  • huyanping
  • 2011年01月13日 10:30
  • 676

php函数substr、mb_substr、mb_strcut截取中文比较

一、函数说明     substr、mb_substr、mb_strcut这三个函数都用来截取字符串,所不同的是:substr是最简单的截取,无法适应中文;mb_substr是按字来切分字符串,而mb...
  • mlks_2008
  • mlks_2008
  • 2013年01月21日 09:45
  • 13943

PHP中substr、mb_substr、mb_strcut这三个截取字符串函数的比较

一、函数说明 substr、mb_substr、mb_strcut这三个函数都用来截取字符串,所不同的是: substr是最简单的截取,无法适应中文,截取中文会产生半个字符的现象,出现乱码; m...
  • chinawangfei
  • chinawangfei
  • 2016年10月20日 10:52
  • 261

在php中使用mb_strlen()函数和mb_substr()函数

php默认是不支持mb_strlen()函数的,需要安装扩展模块。安装方法如下: yum install php-mbstring 找到mbstring.so的位置,可以使用rpm -ql...
  • monsion
  • monsion
  • 2013年06月13日 21:56
  • 4294

PHP中substr() mb_substr() mb_struct()的区别和用法

PHP substr() 函数可以  分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函 数,mb_substr()  /mb_strc...
  • chen7111842
  • chen7111842
  • 2013年10月12日 15:49
  • 360

thinkphp 模板中使用mb_substr(),substr()函数

小记录 在模板中使用函数,之前我记得我一直是这么用的 {$v.title|mb_substr=###,0,16,'utf-8'}函数的参数用###,但是这次却没有成功, 正确的用法是这样...
  • fei003
  • fei003
  • 2017年05月05日 17:39
  • 808
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP substr(),mb_substr()及mb_strcut的区别和用法
举报原因:
原因补充:

(最多只允许输入30个字)