本文目錄一覽:
- 1、這段php代碼的意思?關於中文字串截取無亂碼的方法
- 2、[php]如何在PHP中截取中文字串無亂碼
- 3、php 怎麼截取漢字字元串?
- 4、php關於截取中文字元串的問題
- 5、如何利用PHP來截取一段中文字元串而不出現亂碼
這段php代碼的意思?關於中文字串截取無亂碼的方法
?php
/*
$string 待截取的字元串
$start 截取的起點 數字
$length 截取的長度 數字
原理:逐位元組讀取遍歷原字元串,1個中文佔兩個位元組,所以截取2個作為1個整體,其他的都截取一個
將字元串重新連接返回
*/
function GBsubstr($string, $start, $length) {
if(strlen($string)$length){
$str=null;
$len=$start+$length;
for($i=$start;$i$len;$i++){
if(ord(substr($string,$i,1))0xa0){//如果是GB編碼的中文,一次截取2個位元組
$str.=substr($string,$i,2);
$i++;
}else{//否則,一次截取1個位元組
$str.=substr($string,$i,1);
}
}
return $str.’…’;
}else{
return $string;
}
}
[php]如何在PHP中截取中文字串無亂碼
一年前寫的一個函數。用法與substr一樣,支持中文。您也可以加以改進。
//截取字元串含數,對系統函數的改進,不會將中文變亂。
function mysubstr ($str,$start,$len=0,$cutchar=”…”) {
$str=str_replace(” “,’ ‘,$str);
$str=str_replace(“「”,’「’,$str);
$str=str_replace(“」”,’」’,$str);
$str=str_replace(“—”,’—’,$str);
$str=str_replace(“””,'”‘,$str);
$str=str_replace(”’,”‘”,$str);
$str=str_replace(“”,”,$str);
$str=str_replace(“”,”,$str);
$str=str_replace(“”,”,$str);
$str=preg_replace(“/[\s]+/”,” “,$str);
$tolen=strlen($str);
if(!($start==0 $len=$tolen)){
//為方便操作,先將起始值和長度值轉換為正數
if($start0)$start=$tolen+$start;if($start0)$start=0;if($start$tolen)return “”;
if($len=0)$len=($tolen+$len)-$start;if($len1)return “”;
if($len$tolen)$len=$tolen;
for($i=0;$i$start;$i++){
if(ord(substr($str,$i,1))127){$i++;}
}
$start=$i; //起始位置計算完成
for($k=0;$k$len;$k++,$i++){
if(ord(substr($str,$i,1))127){$i++;$k++;}
}
$len=$k; //長度計算完成
$str=substr($str,$start,$len);
if($start0){$str=$cutchar.$str;}
if($start+$len$tolen){$str.=$cutchar;}
}
$str=str_replace(“”,”,$str);
$str=str_replace(‘”‘,'”‘,$str);
$str=str_replace(“‘”,”’,$str);
$str=str_replace(“”,”,$str);
$str=str_replace(“”,”,$str);
return $str;
}
php 怎麼截取漢字字元串?
?php
$str = ‘這樣一來我的字元串就不會有亂碼^_^’;
echo “mb_substr:” . mb_substr($str, 0, 7, ‘utf-8’);
//結果:這樣一來我的字
echo “
“;
echo “mb_strcut:” . mb_strcut($str, 0, 6, ‘utf-8’);
//結果:這樣
?
首先
1.確保你的Windows/system32下有php_mbstring.dll這個文件,沒有就從你Php安裝目錄extensions里拷入Windows/system32裡面。
2.在windows目錄下找到php.ini打開編輯,搜索mbstring.dll,找到
;extension=php_mbstring.dll把前面的;號去掉,這樣mb_substr函數就可以生效了
mb_strcut函數功能也可以截取字元串長度,下面實例具體看看區別在哪:
mb_substr();
php關於截取中文字元串的問題
php中文亂碼的原因及解決方法
原因:1.php頁面語言本身的編碼類型不合適,這時候,你直接在腳本中寫的中文肯定是亂碼,不用說資料庫了;
解決方法:選擇’utf8’或者’gb2312’,這樣客戶瀏覽器會自動選擇並出現正確的中文顯示。注意:’utf8’或者’gb2312’都可以正確顯示中文的。
2.資料庫mysql中的編碼類型不正確。
解決方法:創建資料庫的時候,mysql
字符集選擇’utf8’,mysql
連接校對選擇utf8_general_ci,這樣創建的資料庫用來存儲中文肯定沒有問題,
否則,你的中文首先在mysql中就是亂碼,更不要期望它會給你在php頁面中顯示正確。
3.與平時的腳本編輯環境有關。比如,有些內容是自己用word寫的,有些是用記事本寫的,有些用editplus、ultraplus等文本編輯器。有時候就直接在dw中寫中文了,
這樣做不出亂碼才怪呢。
解決方法:盡量用同一種編輯器。如果是拷貝來得既有的內容,建議用ultraplus中的編碼轉換功能把它轉換成utf8或者gb2312。
到底轉換成什麼類型並不重要,關鍵要求你的php
web應用程序中的編碼要一致就行。
4.編程訪問
mysql時,建議添加一行代碼:mysql_query(“set
names
‘gbk'”);
這是解決方法
我沒看懂你貼上來的程序
所以給你一些方法去解決亂碼的問題
希望可以幫得上
如何利用PHP來截取一段中文字元串而不出現亂碼
/*
功能:截取全形和半形混合的字元串以避免亂碼
參數:
$str_cut 需要截斷的字元串
$length 允許字元串顯示的最大長度
*/
function substr_cut($str_cut,$length = 30){
if (strlen($str_cut) ; $length){
for($i=0; $i $length; $i++)
if (ord($str_cut[$i]) ; 128) $i++;
$str_cut = substr($str_cut,0,$i) . “…”;
}
return $str_cut;
}
原創文章,作者:OAIUW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130481.html