ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルで収集された文字列インターセプト関数

php_PHP チュートリアルで収集された文字列インターセプト関数

WBOY
WBOYオリジナル
2016-07-20 11:10:40936ブラウズ

この記事では、PHP のさまざまなエンコーディングにおける文字化けの問題を解決する、よく使用されるいくつかの文字列インターセプト関数をまとめています。必要な学生はこれらを参照してください。

GB2312中国語文字列をインターセプト

{
コードは次のとおりです コードをコピー

< ?php

//中国語文字列をインターセプト

function mysubstr($str, $start, $len) {

$tmpstr = "";

$strlen = $start + $len;

for($i = 0; $i < $strlen; $i++) {

if(ord(substr($str, $ i , 1)) > 0xa0) {

$tmpstr .= substr($str, $i, 2);

$i++;

} else

$tmpstr .= substr($str, $i, 1 ;

< ?php

//utf8 文字列をインターセプト

function utf8Substr($str, $from, $len)

return preg_replace('#^(?:[x00-x7F] |[xC0-xFF ][x80-xBF]+){0,'.$from.'}'.

'((?:[x00-x7F]|[xC0-xFF][x80-xBF]+) {0,'. $len.'}).*#s','$1',$str);}?>

コードをコピー

3. UTF でサポートされている漢字インターセプト関数8 および GB2312< ?php

/*

Utf-8 および gb2312 は、漢字インターセプト関数をサポートします

cut_str (文字列、インターセプト長、開始長、エンコーディング);

デフォルトのエンコーディングは utf-8 です

開始長は0です

*/

コードは次のとおりです

function Cut_str($string, $sublen, $start = 0, $code = 'UTF-8')

{

if($ code == 'UTF-8')

{

$pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][ x80-xbf]|[xe1 -xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80 -xbf][x80-xbf ]/";

preg_match_all($pa, $string, $t_string);if(count($t_string[0]) - $start > $sublen) return join( '', array_slice($t_string [0], $start, $sublen))."...";return join('', array_slice($t_string[0], $start, $sublen));}

else

{

$start = $start*2;

$sublen = $sublen*2;

$strlen = strlen($string);

$tmpstr = '';

for($i=0 ; $i< $strlen; $i++)

{

if($i>=$start && $i< ($start+$sublen))

{

if(ord( substr($string, $i , 1))>129)

{

$tmpstr.= substr($string, $i, 2);

}

else

{

$tmpstr.= substr($string, $i , 1);

}

}

if(ord(substr($string, $i, 1))>129) $i++;

}

if(strlen( $tmpstr)< $strlen ) $tmpstr.= "...";

return $tmpstr;

}

}

$str = "インターセプトされるabcd文字列";

echo Cut_str( $str, 8, 0 , 'gb2312');

?>

4. BugFreeの文字インターセプト関数 < ?php

コードは以下の通り コードをコピー
/**

* @package BugFree

* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $

*

*

* 文字列の一部を返します(関数 substr()) を拡張します

*

* @author Chunsheng Wang

* @param string $String 切り取る文字列です

* @param int $Length 返される長さstring.

* @param booble $Append "..." を追加するかどうか: false|true

* @return string 切り取られた文字列。*/

function sysSubStr($String,$Length,$Append) = false )

{

if (strlen($String) < = $Length )

{

return $String;

}

else

{

$I = 0;

while ( $I < $Length)

{

$StringTMP = substr($String,$I,1);

if ( ord($StringTMP) >=224 )

{

$StringTMP = substr( $String ,$I,3);

$I = $I + 3;

}

elseif( ord($StringTMP) >=192 )

{

$StringTMP = substr($String,$私、2);

$I = $I + 2;

}

else

{

$I = $I + 1;

}

$StringLast[] = $StringTMP;

}

$StringLast = implode("",$StringLast);

if($Append)

{

$StringLast .= "...";

}

return $StringLast;

}

}

$String = "php100.com--シンプル、素晴らしい、ユニバーサル";

$Length = "18";

$Append = false;

echo sysSubStr($String,$Length,$Append );

?>


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

www.bkjia.com本当http://www.bkjia.com/PHPjc/444714.html技術記事この記事では、PHP のさまざまなエンコーディングで文字化けする問題を解決する、よく使用される文字列インターセプト関数をいくつかまとめています。必要な学生は参照してください。 インターセプト...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。