phpカスタム中国語文字列切り取り関数substr_for_gb 2312およびsubstr_for_utf 8例
3187 ワード
この例ではphpカスタム中国語文字列切り取り関数substr_について説明します.for_gb 2312およびsubstr_for_utf 8の使い方.皆さんの参考にしてください.具体的には以下の通りです.
补充:小编はここで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プログラム設計に役立つことを願っています.
/*
*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プログラム設計に役立つことを願っています.