php中截取中文字符串的代码小结_PHP
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。
1. 截取GB2312中文字符串
复制代码 代码如下:
//截取中文字符串
function mysubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
?>
2. 截取utf8编码的多字节字符串
复制代码 代码如下:
//截取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都支持的汉字截取函数
复制代码 代码如下:
/*
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{
if($i>=$start && $i{
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)return $tmpstr;
}
}
$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312');
?>
4. BugFree 的字符截取函数
复制代码 代码如下:
/**
* @package BugFree
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* Return part of a string(Enhance the function substr())
*
* @author Chunsheng Wang
* @param string $String the string to cut.
* @param int $Length the length of returned string.
* @param booble $Append whether append "...": false|true
* @return string the cutted string.
*/
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) {
return $String;
}
else
{
$I = 0;
while ($I {
$StringTMP = substr($String,$I,1);
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast[] = $StringTMP;
}
$StringLast = implode("",$StringLast);
if($Append)
{
$StringLast .= "...";
}
return $StringLast;
}
}
$String = "17test.info 走在中国自动化测试的前沿";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go 言語の文字列インターセプトメソッドの詳細な説明 Go 言語では、文字列は不変のバイト列であるため、文字列インターセプトを実装するにはいくつかのメソッドを使用する必要があります。文字列インターセプトは、文字列の特定の部分を取得するための一般的な操作です。必要に応じて、文字列の最初の数文字、最後の数文字、または特定の位置から特定の長さの文字をインターセプトできます。この記事では、Go言語で文字列をインターセプトする方法と具体的なコード例を詳しく紹介します。スライスを使用して文字列インターセプトを実装する Go 言語では、スライスを使用して次のことを行うことができます。

MySQL で ROUND 関数を使用して小数点以下の桁数をインターセプトする方法 MySQL では、ROUND 関数を使用して小数点以下の桁数をインターセプトできます。 ROUND 関数は、数値を指定された小数点以下の桁数に丸めます。以下では、ROUND 関数の使用方法を詳しく紹介し、コード例を示します。構文: ROUND(X,D)X は四捨五入される数値を表し、D は保持される小数点以下の桁数を表します。 ROUND 関数を使用して小数点以下の桁数を取得する例: produc という名前のテーブルがあるとします。

PHP 開発では、中国語の文字列をインターセプトする必要がある状況によく遭遇します。従来、中国語の文字のインターセプトを処理するには、通常 mb_substr() 関数を使用しますが、そのパフォーマンスは低く、十分な可読性はありません。この記事では、いくつかの新しい中国語文字列インターセプト手法を紹介し、mb_substr() に別れを告げ、コードの効率と可読性を向上させます。正規表現を使用して中国語の文字列をインターセプトする 正規表現を使用して中国語の文字列をインターセプトするのは、効率的で簡潔な方法です。正規表現を使用して中国語を照合できます

UniApp は、Vue.js に基づくクロスプラットフォーム アプリケーション開発フレームワークで、iOS と Android の両方のプラットフォーム向けのアプリケーションを迅速に開発できます。 UniApp では、画像のアップロードとトリミングは一般的な要件です。この記事では、UniApp で画像のアップロードとトリミングを実装する方法を紹介し、対応するコード例を示します。 1. 画像アップロードの実装方法: uni.uploadFile() メソッドを使用して画像をアップロードします。まず、uni.uploa を設定する必要があります。

Go言語の文字列インターセプト機能をサクッとマスター Go言語は、シンプルさと効率性という特徴を持ち、多くの開発者に支持されている近年注目を集めているプログラミング言語です。 Go 言語では、文字列処理は非常に一般的な操作であり、文字列インターセプト関数はその重要な部分です。この記事では、Go 言語の文字列インターセプト関数をすぐにマスターできるように、具体的なコード例を使用します。 1. 基本的な文字列インターセプト. Go 言語の文字列はインデックスを通じてインターセプトできます. コード例は次のとおりです:

Java 開発における文字列のインターセプトとスプライシングのパフォーマンスを最適化する方法: 日常の Java 開発では、文字列のインターセプトとスプライシングは非常に一般的な操作です。ただし、Java の文字列は不変であるため、文字列のインターセプトおよびスプライシング操作が頻繁に行われると、パフォーマンスが低下する可能性があります。 Java 開発における文字列のインターセプトとスプライシングのパフォーマンスを向上させるために、次の最適化戦略を採用できます。 StringBuilder または StringBuffer を使用した連結: Java の場合、String

Java は広く使用されているプログラミング言語として継続的に開発および更新されており、新しいバージョンごとに、開発者のコーディング効率を向上させるためのいくつかの新機能が導入されています。最新バージョンの Java12 の機能の 1 つは、文字列のインターセプトと連結をより便利かつ効率的に行う新しい StringAPI の導入です。以前のバージョンでは、文字列のインターセプトと連結の操作は、substring() と "+" 演算子を呼び出して実装する必要がありましたが、これらのメソッドは多数の文字列操作を処理できませんでした。

Go 言語は高性能プログラミング言語として、文字列の操作と処理のためのメソッドと関数を豊富に提供します。中でも文字列インターセプト操作はよく使う機能の一つです。この記事では、Go 言語での文字列インターセプトの実装原理を詳しく掘り下げ、具体的なコード例を通じて実装プロセスを示します。文字列インターセプトとは何ですか? Go 言語では、文字列インターセプトとは、文字列から部分的な部分文字列をインターセプトする操作を指します。開始位置と終了位置を指定することで、元の文字列の指定範囲を取得できます
