ホームページ バックエンド開発 PHPチュートリアル PHPのstrlenとmb_strlenの違いを詳しく解説

PHPのstrlenとmb_strlenの違いを詳しく解説

Jun 20, 2016 pm 01:03 PM
PHPのスキル

PHP では、文字列の長さを見つけるために 2 つの関数 strlenmb_strlen が使用され、One の日常業務でよく使用されます。機能自体は難しくないのですが、初心者の方にとってはマニュアルを読まないと違いが分からない方もいるかもしれません。

わかりました。これ以上ナンセンスではありません。例を通して 2 つの違いを説明しましょう。

<?php
/* 测试时文件的编码方式注意一定要是UTF8  */
$str=&#39;中文a字1符&#39;;
echo strlen($str).&#39;<br>';//14
echo mb_strlen($str,'utf8').'<br>';//6
echo mb_strlen($str,'gbk').'<br>';//8
echo mb_strlen($str,'gb2312').'<br>';//10
?>
ログイン後にコピー

結果の分析により、strlen で計算すると、エンコード形式 UTF8 の中国語の文字の長さは 3 であることがわかります。したがって、「中国語の 1 文字 1 文字」の長さは 3*4+2=14 となります。また、mb_strlen の計算時に内部コードを UTF8 に選択した場合、中国語の文字の長さは 1 として計算されるため、「中国語の 1 文字 1 文字」の長さは 6 になります。

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

echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
ログイン後にコピー

例:

「漢字 a」の strlen($str) 値は 14、

mb_strlen($str) の値は 6、

すると、「漢字a 1文字」が占めるスペースは10と計算できます。

echo mb_internal_encoding();
ログイン後にコピー

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

mb_strlen 関数を使用すると、この問題をより適切に解決できます。 mb_strlen の使用法は strlen と似ていますが、文字エンコーディングを指定する 2 番目のオプションのパラメーターがある点が異なります。たとえば、UTF-8 文字列 $str の長さを取得するには、mb_strlen($str,'UTF-8') を使用できます。 2 番目のパラメータを省略した場合は、PHP の内部エンコーディングが使用されます。内部エンコーディングは、mb_internal_encoding() 関数を通じて取得できます。

注: mb_strlen は PHP のコア関数ではありません。これを使用する前に、php_mbstring.dll が php.ini にロードされていること、つまり、「extension=php_mbstring.dll」という行が存在することを確認する必要があります。コメントアウトされていない場合、未定義関数の問題が発生します。この機能は使用できません。 mb_substr() 関数など、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 でのファイルのアップロードおよびダウンロード手法の詳細な説明 Jun 25, 2023 pm 05:57 PM

PHP は、Web サイト開発で広く使用されている非常に人気のあるサーバー側プログラミング言語です。中でもファイルのアップロードとダウンロードはWebサイトでよく使われる機能の1つであり、PHPはこれらの機能を実現するための機能や技術を豊富に提供しています。この記事では、ウェブサイトをより効率的に開発できるように、PHP でのファイルのアップロードとダウンロードのテクニックを詳しく紹介します。ファイルのアップロード ファイルのアップロードとは、ローカル コンピュータからリモート サーバーにファイルを送信することを指し、ファイルをアップロードした後、これらのファイルを保存、処理、表示できます。 PHPの場合

PHP Kuaishou API インターフェース呼び出しスキル: インターフェースから返されたエラー情報の処理方法 PHP Kuaishou API インターフェース呼び出しスキル: インターフェースから返されたエラー情報の処理方法 Jul 20, 2023 pm 11:22 PM

PHP Kuaishou API インターフェイス呼び出しのヒント: インターフェイスから返されるエラー情報の処理方法 PHP を使用して Kuaishou API インターフェイスを呼び出すと、インターフェイスがエラーを返す状況がよく発生します。処理インターフェイスから返されたエラー情報については、アプリケーションの安定性とユーザー エクスペリエンスを向上させるために、適切な処理とフィードバックを提供する必要があります。この記事では、インターフェイスから返されるエラー情報を処理するためのいくつかの手法を紹介し、対応するコード例を示します。 try-catch を使用して例外をキャッチします。API インターフェイスを呼び出すときに、いくつかの例外エラーが発生する場合があります。

PHPにおけるページング技術のフレームワークへの応用方法を詳しく解説 PHPにおけるページング技術のフレームワークへの応用方法を詳しく解説 Jun 09, 2023 am 11:40 AM

インターネットの急速な発展に伴い、ユーザーのブラウジング エクスペリエンスを向上させるためにデータ ページング機能を実装する必要がある Web サイトがますます増えています。 Web開発においてPHPは最も人気のあるサーバーサイドプログラミング言語の1つであり、データページング機能はPHP開発において欠かせない技術です。この記事では、フレームワークにおける PHP のページング テクノロジの適用方法を紹介し、さまざまなページング ソリューションの長所と短所を比較します。 1. 従来の PHP ページング手法 従来の PHP 開発では、データ ページング機能を実装するには大量のコードを記述する必要があり、それを各ページで繰り返す必要がありました。

PHP プログラミングのヒント: 配列内の欠落している数値をすばやく見つける方法 PHP プログラミングのヒント: 配列内の欠落している数値をすばやく見つける方法 Mar 01, 2024 pm 04:27 PM

PHP プログラミングのヒント: 配列内で欠落している数値をすばやく見つける方法 プログラミングでは、配列内で特定の数値が欠落しているかどうかを確認する必要がある状況によく遭遇します。現時点では、欠落している数値をタイムリーに処理できるように、配列内で欠落している数値を見つけ出す迅速かつ効果的な方法が必要です。この記事では、PHP ベースのプログラミング手法を紹介し、具体的なコード例を使用して、配列内の欠落している数値をすばやく見つける方法を示します。 1. 方法 1: ループを使用して配列を走査する まず、配列をループして、配列内の欠落している数値をチェックします。具体的な手順

PHP での改行の置換の詳細については、こちらをご覧ください。 PHP での改行の置換の詳細については、こちらをご覧ください。 Mar 20, 2024 pm 06:42 PM

PHP での改行の置換は、実際の開発、特にテキスト データを処理する場合によく発生する問題です。改行文字はオペレーティング システムによって表現方法が異なる場合があります。通常、Windows システムでは &quot;&quot;、Linux システムでは &quot;&quot; が使用されます。したがって、テキスト データが通常の形式であることを保証するために、改行を均一に処理する必要があります。この記事では、PHP で改行を置換する手法を詳しく説明し、具体的なコード例を示します。 1. PHP 組み込み関数を使用して改行を処理する PHP にはいくつかの組み込み関数が用意されています。

PHP プログラミングのヒント: 画像のスケーリングを処理する方法 PHP プログラミングのヒント: 画像のスケーリングを処理する方法 Aug 19, 2023 am 10:36 AM

PHP プログラミング スキル: 画像のスケーリングを処理する方法 最新の Web デザインでは、画像は不可欠な部分であり、画像のスケーリングは一般的な操作の 1 つです。画像のコレクションを表示する場合でも、さまざまなサイズのデバイスのニーズに対応する場合でも、画像のスケーリングは重要な役割を果たします。この記事では、PHP プログラミング言語を使用して画像のスケーリングを処理する方法を紹介し、参考用のコード例を添付します。 1. 画像のスケーリングに GD ライブラリを使用する GD ライブラリは PHP の強力な画像処理ライブラリであり、画像のスケーリング機能を実装するために使用できます。まず、確認してください

PHP の高度な同時処理スキルの分析 PHP の高度な同時処理スキルの分析 Aug 10, 2023 pm 06:53 PM

PHP の高度な同時処理スキルの分析 インターネットの発展に伴い、Web サイトへの同時アクセスの要件はますます高くなっています。 Web サイト開発用のプログラミング言語である PHP には、同時アクセスの負荷が高い場合にパフォーマンスと安定性を向上させるための特別な処理スキルが必要です。この記事では、PHP の高度な同時処理手法をいくつか紹介し、コード例を示します。 PHP-FPMPHP-FPM (FastCGIProcessManager) は、PHP によって公式に提供されているプロセス マネージャーです。

PHP クエリ ステートメント最適化のヒントの共有 PHP クエリ ステートメント最適化のヒントの共有 Mar 24, 2024 pm 12:51 PM

タイトル: PHP クエリ ステートメント最適化のヒントの共有 Web アプリケーションを開発する場合、データベース クエリの最適化は重要なリンクであり、アプリケーションのパフォーマンスと応答速度を大幅に向上させることができます。 PHP では、クエリ ステートメントを最適化すると、データベースの負担が効果的に軽減され、システムのパフォーマンスが向上します。この記事では、PHP クエリ ステートメントの最適化手法と具体的なコード例をいくつか紹介します。 1. インデックスの使用 データベース テーブルにインデックスを適切に作成すると、データ クエリを高速化できます。 PHP では、クエリ ステートメントで使用されるインデックスを指定できます。

See all articles