PHP関数mb_strcutの使用テクニックの共有

1590 ワード

  • PHP関数mb_strcutは文字分割を行う際に,文字列の符号化を設定するために最後にパラメータを追加する必要があり,中国語文字を分割して文字化けしてしまう問題を解決できる.

  •  
    PHPの実際の符号化では,文字を分割する必要がある場合にsubstr()関数を用いてこの機能を実現する.しかし、文字に中国語が含まれていると、いくつかの問題が発生し、符号化エラーが発生します.このときmb_を使うことができますsubstr()またはPHP関数mb_strcut、彼らの2つの使い方はsubstr()と似ていますが、PHP関数mb_だけです.strcutは最後に文字列の符号化を設定するために複数のパラメータを追加しますが、一般的なサーバはphp_を開いていません.mbstring.dll、php.iniはphp_mbstring.dllが開いています.この機能が開いているかどうか分からない場合は、if(function_exist(mb_string))を判断したほうがいいです.
     
    例を挙げます.
    < ?php 
  • echo mb_substr('これで私の文字列は文字列化けしません^^',0,7,'utf-8'); 

  • ?> 
    出力:これで私の字
    PHP関数mb_strcutの例
     
    < ?php 
  • echo mb_strcut('これで私の文字列は文字化けしません^^',0,7,'utf-8'); 

  • ?> 
    出力:このように
    上の例からmb_substrは字で文字を切り分け、PHP関数mb_strcutはバイトで文字を切り分けるが、半文字の現象は起こらないが、出力時に切り取ったものが正しくないこともあり、正しいものもあれば間違っていることもあり、中国語では文字化けしていることもある.これらの現象の主な原因は、あなたのこの関数の編成方式が彼のホームページを表示する符号化方式と一致しないことにある.ここでは、PHPが中国語文字列を切り取るカスタム関数も紹介します.PHP実装における文字列の文字列の文字列の文字列の文字列の文字列を切り取る方法です.
     
    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){  

  • $str.=substr($string,$i,2);  
  • $i++;  

  • }else{  
  • $str.=substr($string,$i,1);  

  • }  
  • }  

  • return $str.'...';  
  • }else{  

  • return $string;  
  • }  


  •  
    以上、文字化けしてPHP関数mb_strcutが問題を解決する主なステップ.