ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルで中国語文字列の長さを計算し、中国語文字列をインターセプトするための関数コード

PHP_PHP チュートリアルで中国語文字列の長さを計算し、中国語文字列をインターセプトするための関数コード

WBOY
WBOYオリジナル
2016-07-21 15:25:19816ブラウズ

PHP には、中国語の長さをインターセプトして計算できる特別な mb_substr 関数と mb_strlen 関数があることは誰もが知っていますが、これらの関数は PHP のコア関数ではないため、有効になっていない可能性があります。もちろん、独自のサーバーを使用している場合は、php.ini で有効にするだけで済みます。仮想ホストが使用されており、サーバーがこの機能を有効にしていない場合は、国の状況に適したいくつかの関数を作成する必要があります。
以下の機能は非常に使いやすいです。ただし、utf-8 環境で使用する必要があることを知っておく必要があります。

コードをコピーします コードは次のとおりです:

header('Content-type:text/html;charset=utf-8');
/**
* 中国語の文字列の長さをカウントできる関数
* @param $str 長さを計算する文字列
* @param $type 計算の長さのタイプ、0 (デフォルト) は中国語 1 文字を 1 文字としてカウントすることを意味し、1 は 1 文字を意味します漢字は2文字として数えます
*
*/
function abslength( $str)
{
if(empty($str)){
return 0;
if(function_exists('mb_strlen')){
return mb_strlen($str,'utf-8')
else; {
preg_match_all( "/./u", $str, $ar);
return count($ar[0]);
}
}
$str = '我々は全員中国人です! ';
$len = abslength($str);
var_dump($len); //return 12
$len = abslength($str,'1'); ; //return 22
/*
UTF-8 エンコーディングで中国語の文字列をインターセプトします。パラメーターは substr 関数を参照できます
@param $str インターセプトされる文字列
@param $start インターセプトされる開始位置、負の数値インターセプトする長さ
@param $end インターセプトする長さ
*/
function utf8_substr($str,$start=0) {
if(empty($str)){
return false
}
if (function_exists; (' mb_substr')){
if(func_num_args() >= 3) {
$end = func_get_arg(2);
return mb_substr($str,$start,$end,'utf-8');
else {
mb_internal_encoding("UTF-8");
return mb_substr($str,$start)
}
else {
$null = "", $str , $ ar);
if(func_num_args() >= 3) {
$end = func_get_arg(2);
return join($ar[0],$start,$end); }
else {
return join($null, array_slice($ar[0],$start))
}
}
}
$str2 = 'zhongwen を傍受したい'
echo utf8_substr($str2,0,-4); // zhon を傍受したい


gb2312、gbk、utf-8、big5 の中国語傍受メソッドをサポート



コードをコピーします

コードは次のとおりです:


/*
* 中国語インターセプト、gb2312、gbk、utf-8、big5 をサポート * * @param string $str インターセプトされる文字列* @param int $start の開始位置interception* @param int $length インターセプト長
* @param string $charset utf-8|gb2312|gbk|big5 エンコード
* @param $suffix サフィックスを追加するかどうか
*/
public function csubstr($str, $ start=0, $length, $charset= "utf-8", $suffix=true)
{
if(function_exists("mb_substr"))
{
if(mb_strlen($str, $charset) <= $ length) return $str;
$slice = mb_substr($str, $start, $length, $charset)
}
else
{
$re['utf-8'] = "/[x01-x7f]| [xc2-xdf][x80-xbf] |[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
$re['gb2312'] = "/[x01-x7f]|[xb0 -xf7][xa0-xfe]/";
$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/" ;
$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; , $match);
if(count( $match[0]) $slice = join("", $start, $length)) ;
}
if($suffix) return $slice."…"
return $slice;



http://www.bkjia.com/PHPjc/324187.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/324187.html
技術記事

PHP には、中国語の長さをインターセプトして計算できる特別な mb_substr 関数と mb_strlen 関数があることは誰もが知っていますが、これらの関数は PHP のコア関数ではないため、...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。