php漢字全是問號 php中文漢字字串的擷取問號

2021-10-22 22:50:36 字數 1525 閱讀 5596

漢字中文使用php自帶函式擷取有時會碰到有問號了,下面我們整理了幾個非常不錯的漢字中文精確擷取例項。

php在操作字串的問題時間無非兩個問題:

1.判斷字串編碼是gbk還是unicode。

2.對相應編碼採取相應擷取方法。

一般情況下我們使用substr擷取漢字可能會遇到亂碼問題。因為漢字是雙位元組的,當被擷取了乙個位元組時,這個漢字就無法顯示,亂掉了。

其實解決很簡單,看下面的擷取函式:

**如下

複製**

//擷取超長字串

function curtstr($str,$len=30)'.

'((?:[x00-x7f]|[xc0-xff][x80-xbf] )).*#s',

'$1',$str);

utf-8、gb2312都支援的漢字擷取函式

**如下

複製**

<?php utf-8、gb2312都支援的漢字擷取函式

cut_str(字串, 擷取長度, 開始長度, 編碼);

編碼預設為 utf-8

開始長度預設為 0

function cut_str($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))."...";

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))>129)

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

else

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

if(ord(substr($string, $i, 1))>129) $i ;

if(strlen($tmpstr)

return $tmpstr;

$str = "abcd需要擷取的字串";

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

php中文亂碼問號,php中文問號亂碼怎麼辦

php中文問號亂碼怎麼辦 閱讀 76 這篇文章主要介紹php中文問號亂碼怎麼辦,文中介紹的非常詳細,具有一定的參考價值,感興趣的小夥伴們一定要看完!php中文問號亂碼的解決辦法 1 頁頭設定為 header content type text html charset utf 8 2 字符集設定為u...

關於PHP連線MySQL中文出現問號

php連線mysql8.0的時候,頁面的中文變成了問號 檢視資料庫的編碼 show create database 資料庫名 檢視資料表的編碼 show create table 表名 檢視資料庫的編碼格式 修改my.cnf 檔案 vim etc my.cnf 在my.cnf檔案新增以下內容 cli...

PHP切割漢字

utf 8編碼的字元可能由1 3個位元組組成。方法一擷取中文字串方法 function msubstr str,start,len else return tmpstr 第二種方法 擷取的是utf 8字串 function utf substr str,len else return join ne...