`

substr(),mb_substr()及mb_strcut的区别和用法(中文字符截取)

    博客分类:
  • PHP
阅读更多
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:我是



引自:http://hi.baidu.com/anylzer/blog/item/c546732922e9f4e499250aeb.html
分享到:
评论

相关推荐

    浅析PHP substr,mb_substr以及mb_strcut的区别和用法

    `mb_strcut()`函数与`mb_substr()`类似,也是多字节安全的,但它使用不同的截取方法。当起始位置处于多字节字符的第二个字节或更高位置时,`mb_strcut()`会从该字符的第一个字节开始截取。此外,它会减去长度内不是...

    PHP截取汉字乱码问题解决方法mb_substr函数的应用

    总的来说,当处理包含多字节字符的字符串时,使用`mb_substr`和`mb_strcut`等MBString函数能有效地防止乱码问题,确保截取操作的正确性。它们是处理国际化和多语言网站时不可或缺的工具,对于PHP开发者来说非常重要...

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

    描述中指出,针对这一问题,可以使用mb_substr()和mb_strcut()这两个函数来正确处理中文字符串。这两个函数是PHP的多字节字符串扩展(mbstring extension)提供的函数,专门用于处理多字节字符,例如UTF-8编码的中文...

    以utf8格式截取的字符串编码

    在这个场景中,"以utf8格式截取的字符串编码"指的是在处理UTF-8编码的字符串时进行截取操作的方法和注意事项。 首先,我们要理解UTF-8编码的特点。UTF-8是一种变长编码,每个Unicode字符可能由1到4个字节来表示。...

    php中文字符串截取方法实例总结

    最理想的情况是使用mbstring扩展库中的mb_substr或mb_strcut函数,它们能很好地处理多字节字符集,且使用方法简单。如果服务器环境不支持mbstring扩展,可以考虑通过自定义函数来实现,不过这种方式在处理效率上可能...

    php字符串截取函数用法分析

    在PHP编程语言中,字符串处理是一项常见的...如果涉及到多字节字符,特别是中文,建议使用 `mb_substr()` 或类似函数,以确保正确处理字符串。在实际开发中,理解这些函数的特性和限制对于编写健壮的PHP代码至关重要。

    php截取字符串

    这里,我们从字符串的第3个位置开始截取,截取长度为3,由于字符串是UTF-8编码,所以`strcut()`会正确识别并截取出正确的汉字。 除了上述函数,PHP还有其他与字符串处理相关的工具,如`strpos()`用于查找子字符串的...

    php面试题目

    在PHP中,可以使用`mb_substr()`和`mb_strcut()`函数来截取字符串,这两个函数都能够正确处理多字节字符: ```php $str = '我是一串比较长的中'; echo "mb_substr: " . mb_substr($str, 0, 6, 'utf-8'); echo "mb_...

    PHP常用函数学习

    4. **`mb_strcut()`**:与`mb_substr()`相似,但允许指定不同的长度处理规则,以适应不同语言的字符边界。 5. **`strchr()`**:此函数用于获取指定字符首次出现之后的所有字符。 ```php $substring = strchr($str...

    PHP经典面试题集

    实现中文字串截取无乱码的方法 - **代码示例**: ```php $str = '我是一串比较长的中'; echo "mb_substr: ".mb_substr($str, 0, 6, 'utf-8'); echo "mb_strcut: ".mb_strcut($str, 0, 6, 'utf-8'); ``` - `mb...

    PHP中比较两个字符串找出第一个不同字符位置例子

    这个函数首先计算了异或后的字符串中空字符的长度,然后使用`mb_strcut`截取从这个位置到字符串末尾的部分。最后,计算原始字符串的长度与截取部分的长度之差,得到的就是第一个不同字符的偏移量。 除了上述方法,...

    找不到php_mbstring.dll或php_exif.dll的解决方法

    `mbstring`扩展提供了许多用于处理多字节字符串的强大函数,例如`mb_substr()`和`mb_strcut()`等。通过这些函数,我们可以更加方便地处理各种编码下的字符串数据。 #### 结论 通过以上步骤,我们可以有效地解决找不...

    php sql 优化

    - `mb_substr()` 和 `mb_strcut()` 分别用于获取多字节字符串的子串,区别在于前者按字符截取,后者按字节截取。 #### (5) 获取客户端 IP 地址 - `$_SERVER['REMOTE_ADDR']`:直接获取客户端 IP。 - `gethostbyname...

    php采集速度探究总结(原创)

    str_cut函数使用了先分割再替换的方式,它先通过strstr找到起始字符串的位置,然后使用substr和strpos定位并提取出所需的子字符串。str_cut1函数则直接在原始字符串中查找和替换,这在效率上处于中等水平。而str_cut...

    php不用正则采集速度探究总结

    - `str_cut1`:使用`strpos`和`substr`组合直接查找并替换,效率中等,适用于直接从字符串中提取第一个匹配。 - `str_cut3`:此函数使用`explode`来分割字符串,但在处理大型字符串时效率较低。通过先分割再查找和...

Global site tag (gtag.js) - Google Analytics