PHP 中英文擷取無亂碼

2021-06-21 17:15:24 字數 979 閱讀 5457

在學習mysql 字符集時,解決了php中英文擷取無亂碼的問題。這個方法的核心在於判斷取多少個位元組上。

<?php 

//php中英文擷取無亂碼

header('content_type=text/php;charset=utf-8');

$str = '浙江zju大學';

//關鍵在於判斷往後截多少個位元組上,這是這個函式的核心

//此函式是用客串來判斷的,效率不高

//位運算效果會更好

//110x ***x && 1110 0000 -> 1100 0000

//1110 ***x && 1111 0000 -> 1110 0000

//位運算時不受英文本元最高位為0的影響,只是在轉成字串才受到影響

function utf8sub($str,$len)

$res = '';

$offset = 0;

$chars = 0;

$count = 0;

$length = strlen($str);//待擷取字串的位元組數

while($chars<$len && $offset<$length)elseif (substr($high,0,3) == '110') elseif (substr($high,0,4) == '1110') elseif (substr($high,0,5) == '11110') elseif (substr($high,0,6) == '111110') elseif(substr($high,0,7)=='1111110')

$res .= substr($str,$offset,$count);

$chars +=1;

$offset += $count;

} return $res;

}echo utf8sub($str,5),'

';echo utf8sub($str,10),'

';?>

iconv substr擷取php中英文混排字串

php5中解決中英文混排字串的函式包括iconv substr iconv strpos iconv strlen substr 函式可以分割文字,但要分割的文字如果包括中文字元往往會遇到問題,這時可以用mb substr mb strcut這個函式,mb substr mb strcut的用法與s...

PHP擷取中英文本串

php擷取gb2312中文字串 php擷取gb2312中文字串 param str 被擷取的字串 param start 起始長度 param len 擷取長度 param suffix 字尾字串 function gbk str str,start,len,suffix i else return...

oracle PL SQL中英文亂碼

第一步 select userenv language from dual oracle字符集無法儲存中文字元。上面的語句查詢oracle字符集。看是否是simplified chinese china.zhs16gbk 如果是請進行第二步 第二步,在此電腦右鍵 屬性 高階系統設定 環境變數 在系統...