日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php 字符串 中文,php 中文字符串截取乱码

發(fā)布時(shí)間:2023/12/3 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 字符串 中文,php 中文字符串截取乱码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PHP截取字符串如果是英文直接用substr就可以了,但對于中文字符,用substring可能會導(dǎo)致亂碼,那么將如何解決呢?

1、通過函數(shù)mb_substr實(shí)現(xiàn)

說明:mb_substr($str, $start, $length, $encoding);通過該函數(shù)即可,但需要加載php_mbstring.dll擴(kuò)展。

案例:<?php

$str?=?'這是一個(gè)字符串切割函數(shù)';

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

?>

2、通過函數(shù)mb_strcut實(shí)現(xiàn)

說明:mb_strcut() 和 mb_substr() 類似,都是從一個(gè)字符串中提取子字符串,但是按字節(jié)數(shù)來執(zhí)行,而不是字符個(gè)數(shù)。 如果截?cái)辔恢梦挥诙嘧止?jié)字符兩個(gè)字節(jié)的中間,將于該字符的第一個(gè)字節(jié)開始執(zhí)行。 這也是和 substr() 函數(shù)的不同之處,后者簡單地將字符串在字節(jié)之間截?cái)?#xff0c;這將導(dǎo)致一個(gè)畸形的字節(jié)序列。

3、通過編寫的函數(shù)(支持UTF-8和GB2312)

案例:<?php

/*

Utf-8、gb2312都支持的漢字截取函數(shù)

cut_str(字符串,?截取長度,?開始長度,?編碼);

編碼默認(rèn)為?utf-8

開始長度默認(rèn)為?0

*/

function?cut_str($string,?$sublen,?$start?=?0,?$code?=?'UTF-8')

{

$string?=?str_replace(array('&',?'"',?''),?array('&',?'"',?''),?$string);

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

{

if($i>=$start?&&?$i

{

if(ord(substr($string,?$i,?1))>0xa0)

{

$tmpstr.=?substr($string,?$i,?2);

}

else

{

$tmpstr.=?substr($string,?$i,?1);

}

}

if(ord(substr($string,?$i,?1))>0xa0)?$i++;

}

if(strlen($tmpstr)

return?$tmpstr;

}

}

$str?=?"這是一個(gè)字符串切割函數(shù)";

echo?cut_str($str,?8,?0,?'gb2312');

?>

總結(jié)

以上是生活随笔為你收集整理的php 字符串 中文,php 中文字符串截取乱码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。