phpカスタム中国語文字列切り取り関数substr_for_gb 2312およびsubstr_for_utf 8例

3187 ワード

この例ではphpカスタム中国語文字列切り取り関数substr_について説明します.for_gb 2312およびsubstr_for_utf 8の使い方.皆さんの参考にしてください.具体的には以下の通りです.

/*
*gb2312       
 */
function substr_for_gb2312($str,$start,$len=null)
 {
  $totlelength = strlen($str);
  //    
  if ($len == null) $len = $totlelength;
  if ($len ==0) return "";
  if ($len >= $totlelength && $start == 0 ) return $str;
  if ($start > $totlelength) return "";
  //  $start
  if ($start < 0 ) //$start<0 ,   $start>0    .
  {
  if ( abs($start) >= $totlelength ) $start = 0;
  else $start = $totlelength - abs($start);
  }
  //      ,          ,        .
  if ($start > 0)
  {
  $i = $start-1;
  $flag = -1;
  while ($i >= 0)
  {
  if ( ord(substr($str,$i,1)) > 160)
  {
  $flag = -1*$flag;
  }
  else break;
  $i--;
  }
  if($flag==1)
  {
  $start = $start - 1;
  $len++;    //     .
  }
 }
 $str = substr($str,$start);//     $str $start     
 $totlelength = strlen($str);
 //      ,          ,         .
 if ($len<0) $len = $totlelength - abs($len);
 if ($len <= 0) return "";
 $i=min($len,$totlelength);
 $i--;
 $flag = -1;
 while ($i >= 0)
 {
  if (ord(substr($str,$i,1))>160)
  {
   $flag=-1*$flag;
  }
  else break;
  $i--;
 }
 if($flag == 1)
  $len=$len-1;
 $subit=substr($str,0,$len);
 return $subit;
 }
/******************************************************************
* PHP  UTF-8   ,       。
*   、  (  ) 1  (8 ),  (  ) 3  
* @return       ,  $len    0 ,         
* @param $str     
* $len         
****************************************************************/
function substr_for_utf($str,$len)
{
for($i=0;$i 127)
{
$i++;
if($i
/* start   utf8    */
function utf8_substr($string, $start, $length) {
  preg_match_all ('/[/x00-/x7F]|[/xC2-/xDF][/x80-/xBF]|[/xE0-/xEF][/x80-/xBF][/x80-/xBF]|[/xF0-/xF4][/x80-/xBF][/x80-/xBF][/x80-/x
BF]/', $string, $rs);
  $out = '';
  $size = count ($rs[0]);
  $end = $start + $length;
  if ($end > $size ) {
    $end = $size;
  }
  for ($i = $start; $i < $end; $i++) {
    $out .= $rs[0][$i];
  }
  return $out;
}


补充:小编はここで1种の当駅のphpフォーマットの美化のレイアウトツールを推荐してみんなが后のPHPプログラムの设计の中でコードのレイアウトを行うことを助けます:
phpコードオンラインフォーマット美化ツール:
http://tools.jb51.net/code/phpformat
また、phpはC言語スタイルに属するため、以下のツールはphpコードのフォーマットを実現することができます.
C言語スタイル/HTML/CSS/jsonコードフォーマット美化ツール:http://tools.jb51.net/code/ccode_html_css_json
PHPに関する内容についてもっと兴味のある読者は、「PHP数学演算テクニック総括」、「php操作officeドキュメントテクニック総括(word,excel,access,pptを含む)」、「PHP配列(Array)操作テクニック大全」、「phpソートアルゴリズム総结」、「PHP常用遍歴アルゴリズムとテクニック総括」、「PHPデータ构造とアルゴリズムチュートリアル」、「phpプログラム設計アルゴリズム総括」、「php正規表現用法総括」、「PHP演算と演算子用法総括」、「php文字列(string)用法総括」および「phpよく見られるデータベース操作テクニック要約」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.