ホームページ バックエンド開発 PHPチュートリアル php_PHP チュートリアルの strlen、mb_strlen、substr()、mb_substr()、mb_strcut の違い

php_PHP チュートリアルの strlen、mb_strlen、substr()、mb_substr()、mb_strcut の違い

Jul 13, 2016 pm 05:00 PM
php strlen substr について 違い 記事

この記事では、strlen、mb_strlen、substr()、mb_substr()、mb_strcut の違いと使い方を詳しく紹介しています。学習が必要な学生は参考にしてください。

mb_*の文字列分割関数の利用について:
win での設定
php_mbstring.dll 拡張機能をインストールする必要があります
php.ini で php_mbstring.dll を開く必要があります
Linux での設定はオンラインで簡単に検索できます

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

//テスト時のファイルのエンコード方式はUTF8である必要があります
$str='漢字a';
echo strlen($str).'
';//14
echo mb_strlen($str,'utf8').'
';//6
echo mb_strlen($str,'gbk').'
';//8
echo mb_strlen($str,'gb2312').'
';//10
?>


結果分析: strlen を計算するとき、UTF8 の中国語文字は 3 文字として扱われるため、「中国語 1 文字」の長さは 3*4+2=14 になります。mb_strlen を計算するとき、内部コードは UTF8 として選択されます。漢字は1文字の長さとして計算されるので、「漢字1文字」の長さは6

mb_strlen デフォルトのエンコーディングを渡すことができます

mb_internal_encoding() を取得しました。

これら 2 つの関数を使用すると、中国語と英語が混在した文字列の占有率を共同で計算できます (中国語の文字の占有率は 2、英語の文字の占有率は

)

1 echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;

PHP の組み込み文字列長関数 strlen は、中国語の文字列を正しく処理できません。取得できるのは、文字列によって占有されているバイト数だけです。 GB2312 中国語エンコードの場合、strlen によって取得される値は中国語の文字数の 2 倍ですが、UTF-8 エンコードされた中国語の場合、その差は 3 倍になります (UTF-8 エンコードでは、1 つの中国語文字は 3 バイトを占めます)。

文字列の分割
substr() 関数はテキストを分割できますが、分割するテキストに漢字が含まれる場合、問題が発生することがよくあります。この場合は、mb_substr()/mb_strcut 関数を使用できます

mb_substr は文字を単語ごとに分割し、mb_strcut は文字をバイトごとに分割しますが、どちらも文字の半分を生成しません。


substr() 関数はテキストを分割できますが、分割するテキストに中国語の文字が含まれている場合は、mb_substr()/mb_strcut 関数を使用することができます。 substr() と似ていますが、mb_substr()/mb_strcut は文字列のエンコーディングを設定するために最後にパラメーターを 1 つ追加する必要があります。ただし、ほとんどのサーバーは php_mbstring.dll を php で開く必要があります。 .ini。

例:

コードは次のとおりです コードをコピー
echo mb_substr('こうすれば文字列は文字化けしません^_^', 0, 7, 'utf-8');
?>

出力: このように私の言葉

コードは次のとおりです コードをコピー
echo mb_strcut('こうすれば文字化けしません^_^', 0, 7, 'utf-8');
?>


出力: このようになります
上記の例からわかるように、mb_substr は文字を単語ごとに分割し、mb_strcut は文字をバイトごとに分割しますが、どちらも文字の半分を生成しません...

mbstring関数の説明:


PHP の mbstring 拡張モジュールは、マルチバイト文字の処理機能を提供します。最も一般的に使用される方法は、mbstring を使用してマルチバイトの中国語文字を分割することです。これにより、PHP の拡張機能であるため、パフォーマンスが向上します。また、一部のカスタム マルチバイト セグメンテーション関数よりも優れています。

mbstring 拡張機能には、同様の関数を備えたいくつかの関数、mb_substr および mb_strcut が用意されています。説明はマニュアルを参照してください。

mb_substr
mb_substr() は、start パラメーターと length パラメーターで指定された str の部分を返します。

mb_substr() は文字数に基づいてマルチバイトの安全な substr() 操作を実行します。位置は sqlserver/42852.htm target=_blank >最初の文字の位置は 0 です。2 番目の文字の位置は 1 です。

mb_strcut
mb_strcut() は、start パラメーターと length パラメーターで指定された str の部分を返します。

mb_strcut()はmb_substr()と同等の動作を別の方法で行いますが、開始位置がマルチバイト文字の2バイト目以上の場合はマルチバイト文字の1バイト目から開始されます。

長さより短い文字列と、マルチバイト文字列の一部ではない文字、またはシフトシーケンスの途中ではない文字を str から減算します。

別の例として、mb_substr と mb_strcut をそれぞれ使用してセグメント化されたテキストがあります。

プレーンテキスト

コード:


コードは次のとおりです $str = '私は中国語の比較的長い文字列-www.webjx.com';


echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');

エコー "
";

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');

?>


出力結果は以下の通りです:
コードをコピー

mb_substr:私は比較の文字列です

mb_strcut:私は

です
テストコード:

コードは次のとおりです/**
コードをコピー
* 文字列分割 単語ごとに分割

* @param $content 文字列
* @param $length int
* @param $etc 文字列
* @戻り文字列
​*/
function Truncate($content, $length, $etc = '...') {

if ($length == 0) {

戻ります '';

} elseif (mb_strlen($content,'utf-8') > $length) {
$length -= min($length, mb_strlen($etc));
$charset = 'utf-8';
$content = mb_substr($content, 0, $length, $charset) . }
$content を返す;
}

$str ='ヴォルテール (1694~1778) フランスのブルジョワ啓蒙思想家、哲学者、歴史家、作家。ヴォルテールの元の名前はF.M. Arrouetでした。 ';

echo strlen($str);//文字列の長さ

echo '


'; Echo mb_strlen($str,'utf-8');//文字列の長さ

echo '


';
echo mb_strcut($str,0,35,'utf-8');//バイト単位で分割
echo '
';
echo mb_substr($str,0,35,'utf-8');//単語ごとに分割
echo '
';
echo Truncate($str,35);//文字列インターセプトメソッド


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631281.html技術記事この記事では、strlen、mb_strlen、substr()、mb_substr()、mb_strcut の違いと使い方を詳しく紹介していますので、学習が必要な学生は参考にしてください。 mb_*の文字列分割関数の利用について:...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

エーテルとビットコインの違いは、エーテルとビットコインの違いは何ですか エーテルとビットコインの違いは、エーテルとビットコインの違いは何ですか Mar 19, 2025 pm 04:54 PM

イーサリアムとビットコインの違いは重要です。技術的には、BitcoinはPowを使用し、EtherはPowからPOSに移行しました。ビットコインの取引速度は遅く、イーサリアムは高速です。アプリケーションシナリオでは、Bitcoinは支払いストレージに焦点を当て、EtherはスマートコントラクトとDAPPをサポートしています。発行に関しては、ビットコインの総量は2100万人であり、エーテルコインの総額は固定されていません。各セキュリティチャレンジが利用可能です。市場価値に関しては、ビットコインが最初にランク付けされ、両方の価格の変動は大きいですが、特性が異なるため、イーサリアムの価格動向はユニークです。

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

C言語のcharとwchar_tの違い C言語のcharとwchar_tの違い Apr 03, 2025 pm 03:09 PM

C言語では、charとwchar_tの主な違いは文字エンコードです。CharはASCIIを使用するか、ASCIIを拡張し、WCHAR_TはUnicodeを使用します。 Charは1〜2バイトを占め、WCHAR_Tは2〜4バイトを占有します。 charは英語のテキストに適しており、wchar_tは多言語テキストに適しています。 CHARは広くサポートされており、WCHAR_TはコンパイラとオペレーティングシステムがUnicodeをサポートするかどうかに依存します。 CHARの文字範囲は限られており、WCHAR_Tの文字範囲が大きく、特別な機能が算術演算に使用されます。

どちらがより良いPHPですか、それともLaravelですか? どちらがより良いPHPですか、それともLaravelですか? Mar 27, 2025 pm 05:31 PM

LaravelはPHPベースのフレームワークであるため、PHPとLaravelは直接匹敵するものではありません。 1.PHPは、シンプルで直接的であるため、小規模プロジェクトや迅速なプロトタイピングに適しています。 2。LARAVELは、豊富な機能とツールを提供するため、大規模なプロジェクトや効率的な開発に適していますが、急な学習曲線があり、純粋なPHPほど良くない場合があります。

See all articles