目次
strlenとmb_strlen、strlenmb_strlenの違い
ホームページ バックエンド開発 PHPチュートリアル strlen と mb_strlen の違い、strlenmb_strlen_PHP チュートリアル

strlen と mb_strlen の違い、strlenmb_strlen_PHP チュートリアル

Jul 13, 2016 am 10:19 AM
strlen

strlenとmb_strlen、strlenmb_strlenの違い

phpで文字列の長さを計算する一般的な関数は、strlenとmb_strlenです。文字がすべて英語の場合、この2つは同じです。ここでは主に中国語と英語が混在した場合の 2 つの計算結果を比較します。

PHPでは、strlenmb_strlenは文字列の長さを求める関数ですが、初心者の方にとってはマニュアルを読まないと違いがよくわからない方もいるかもしれません。 以下は 2 つの違いを説明する例です。

まず例を見てみましょう:

  1. //テスト時のファイルのエンコード方式はUTF8である必要があります
  2. $str='漢字a' ;
  3. エコー strlen($str).'
    ';//14
  4. echo mb_strlen($str,'utf8').'
    ';//6
  5. echo mb_strlen($str,'gbk').'
    ';//8
  6. echo mb_strlen($str,'gb2312').'
    ';//10
  7. ?>
  8. 結果分析: strlen を計算するとき、UTF8 の中国語の文字は 3 つの長さとして扱われるため、「中国語の 1 文字の文字」の長さは 3*4+2=14 になります。mb_strlen を計算するとき、選択された内部コードは UTF8 です。すると、漢字は1文字の長さとして計算されるので、「漢字1文字1文字」の長さは6になります

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

    1. echo (strlen($str) + mb_strlen($str,'UTF8')) / 2; 例えば、「中国語一文字1文字」のstrlen($str)値が14、mb_strlen($str)値が6である場合、「中国語一文字1文字」のプレースホルダは次のように計算できます。 10.

    エコー mb_internal_encoding();

    PHP の組み込み文字列長関数 strlen は、中国語の文字列を正しく処理できません。取得できるのは、文字列によって占有されているバイト数だけです。 GB2312 中国語エンコードの場合、strlen によって取得される値は中国語の文字数の 2 倍ですが、UTF-8 エンコードされた中国語の場合、その差は 3 倍になります (UTF-8 エンコードでは、1 つの中国語文字は 3 バイトを占めます)。
    1. 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」という行が含まれていることを確認してください。存在し、コメントアウトされていない場合は、関数の定義に関するエラー メッセージが表示されます。

    phpにおけるstrlenとmb_strlenとcountの違い

strlen は文字列の長さを計算します。漢字 1 文字は 2 文字です。
mb_strlen は、文字エンコーディング モードに従って count で指定された文字数をカウントし、配列内の要素の数またはオブジェクト内の属性の数を計算します

strlen() と mb_strlen




の関数は何ですか?

PHPでは、strlenとmb_strlenは文字列の長さを調べる関数ですが、初心者にとってはマニュアルを読まないと違いがよくわからない人もいるかもしれません。
以下は 2 つの違いを説明する例です。
まず例を見てください:
'; //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 になります。
使用一緒に計算するこれら 2 つの関数 中国語と英語の混合文字列のプレースホルダーは何ですか (中国語の文字のプレースホルダーは 2、英語の文字のプレースホルダーは 1)

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

たとえば、「中国語 1 文字 1 文字」の strlen($str) の値が 14、mb_strlen($str) の値が 6 であれば計算できます。 「中国語の 1 文字 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」という行が含まれていることを確認してください。存在し、コメントアウトされていない場合は、関数の定義に関するエラー メッセージが表示されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/871491.html技術記事 strlen と mb_strlen、strlenmb_strlen の違い PHP で文字列の長さを計算する一般的な関数は、strlen と mb_strlen です。文字がすべて英語の場合、この 2 つは同じです。ここで...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の 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での安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) Apr 15, 2025 am 12:15 AM

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

See all articles