php内置的substr无法解决截取中文字符串的乱码问题,在php.ini打开extension=php_mbstring.dll支持的情况下,可以使用mb_substr完美解决中文截取
要使用到的函数:mb_substr和mb_strlen。
mb_substr使用方法:mb_substr("我是要被截取的中文字符串",开始位置, 要截取的长度, 字符串的编码);实例:mb_substr("我是要被截取的中文字符串",0, 3, 'gbk');结果将是“我是要”;这个函数可以解决字符串中包含中文、英文、数字、字符各种类型的字符串。
在实际使用过程中需要和mb_strlen配合使用,mb_strlen的使用方法和strlen类似,只是多了一个编码参数:mb_strlen("我是要被计算长度的字符", "gbk");结果是11。
详细的使用例子:
比如字符串超过20个就需要截取:
if(mb_strlen($str, "gbk") >20)
{
$str = mb_substr($str, 0, 20, "gbk");
}
经常面试的时候问你如何实现字符串翻转,第一反应,当然是strrev函数啦,这么容易的题目还放在面试里考,真不嫌麻烦啊?
strrev函数对英文很好用,直接可以实现字符串翻转,但是面对中文呢?肯定都是乱码,对于这样的问题有很多,比如strstr,substr等函数都是这样的。还好PHP提供了mb_类的函数实现不同编码、不同语言之间的相互转换等操作。下面是我写的PHP字符串翻转函数(mb_类的函数需要开启一个mb_string实现)。
<?PHP function getRev($str,$encoding='utf-8'){ $result = ''; $len = mb_strlen($str); for($i=$len-1; $i>=0; $i--){ $result .= mb_substr($str,$i,1,$encoding); } return $result; } $str="我爱博客园" echo getRev($str); ?> //输出结果园客博爱我