php斷句無亂碼,php亂碼如何解決

本文目錄一覽:

如何利用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;

}

說明: 

程序的關鍵語句是: 

for($i=0; $i  $length; $i++)

if (ord($str_cut[$i]) ; 128) $i++;

$str_cut = substr($str_cut,0,$i) . “…”;

如果字符的ASCII碼大於128,說明當前字符和下一個字符是屬於一個漢字的。 

則,$i++ 跳過對下一個字符的判斷。 

再結合循環中的 $i++ ,實際上,當遇到一個漢字時,$i 就會加 2 ,從而正確的跳過漢字。 

最終實現的效果是,$i 變量指向的要麼是半角的字符,要麼是全角漢字的首字符,不會指向 

全角漢字的第二個字符,所以,當$i ;= $length 時,循環結束,使用 

$str_cut = substr($str_cut,0,$i) . “…”; 截取字符時自然也就不會出現亂碼了。 

本人在寫一個程序時需要利用PHP從一段字符串中截取指定長度的一段字符下來。以前在寫ASP的時候,參考動網的程序寫過類似的程序,不過,還沒用PHP寫過。 

想偷懶,看有不有現成的代碼可以用。於是,在GOOGLE中輸入:PHP 截斷字符 後查找到一段代碼。

[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 如何實現中文無亂碼截取用哪個函數

中文截取:mb_substr()

mb_substr( $str, $start, $length, $encoding )

$str,需要截斷的字符串

$start,截斷開始處,起始處為0

$length,要截取的字數

$encoding,網頁編碼,如utf-8,GB2312,GBK

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/282826.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:06
下一篇 2024-12-22 08:06

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示“文件中含有宏,保存將導致宏不可用”的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • 如何解決dlib庫安裝失敗

    如果您遇到了dlib庫安裝失敗的問題,在此文章中,我們將從多個方面對這個問題進行詳細的闡述,並給出解決方法。 一、檢查環境安裝情況 1、首先,您需要確認是否安裝了C++編譯器和Py…

    編程 2025-04-29
  • 如何解決web瀏覽器雙擊事件時差

    本文將從以下幾個方面對web瀏覽器雙擊事件時差進行詳細闡述,並提供解決方法。 一、雙擊事件延時設置 1、問題描述:在web瀏覽器中,雙擊事件默認會延時一定的時間才能觸發該事件,這個…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網絡爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • 如何解決vuejs應用在nginx非根目錄下部署時訪問404的問題

    當我們使用Vue.js開發應用時,我們會發現將應用部署在nginx的非根目錄下時,訪問該應用時會出現404錯誤。這是因為Vue在刷新頁面或者直接訪問非根目錄的路由時,會認為服務器上…

    編程 2025-04-29
  • Python3亂碼轉中文

    本文將詳細介紹如何轉換Python3中的亂碼為中文字符,幫助Python3開發工程師更好的處理中文字符的問題。 一、Python3中文亂碼的原因 在Python3中,中文字符使用的…

    編程 2025-04-29
  • 如何解決egalaxtouch設備未找到的問題

    egalaxtouch設備未找到問題通常出現在Windows或Linux操作系統上。如果你遇到了這個問題,不要慌張,下面我們從多個方面進行詳細闡述解決方案。 一、檢查硬件連接 首先…

    編程 2025-04-29

發表回復

登錄後才能評論