PHP_PHP チュートリアルで strlen と mb_strlen の違いを説明する
PHPでは、strlenとmb_strlenは文字列の長さを求める関数ですが、初心者の方にとってはマニュアルを読まないと違いがよく分からない方もいるかもしれません。
以下は 2 つの違いを説明する例です。
最初に例を見てください:
<ol class="dp-c"> <li class="alt"><span><span><?php </span></span></li><li><span class="comment">//测试时文件的编码方式要是UTF8 </span><span> </span></li><li class="alt"><span class="vars">$str</span><span>=</span><span class="string">'中文a字1符'</span><span>; </span></li><li><span class="func">echo</span><span> </span><span class="func">strlen</span><span>(</span><span class="vars">$str</span><span>).</span><span class="string">'<br>'</span><span>;</span><span class="comment">//14 </span><span> </span></span></li> <li class="alt"> <span class="func">echo</span><span> mb_strlen(</span><span class="vars">$str</span><span>,</span><span class="string">'utf8'</span><span>).</span><span class="string">'<br>'</span><span>;</span><span class="comment">//6 </span><span> </span> </li> <li> <span class="func">echo</span><span> mb_strlen(</span><span class="vars">$str</span><span>,</span><span class="string">'gbk'</span><span>).</span><span class="string">'<br>'</span><span>;</span><span class="comment">//8 </span><span> </span> </li> <li class="alt"> <span class="func">echo</span><span> mb_strlen(</span><span class="vars">$str</span><span>,</span><span class="string">'gb2312'</span><span>).</span><span class="string">'<br>'</span><span>;</span><span class="comment">//10 </span><span> </span> </li> <li><span>?> </span></li> </ol>
結果分析: strlen を計算するとき、UTF8 の中国語文字は 3 つの長さとして扱われるため、「中国語の 1 文字の文字」の長さは 3*4+2=14 になります。 in mb_strlen 計算する際、内部コードがUTF8を選択している場合、中国語の文字は長さ1として計算されるため、「中国語の文字1文字」の長さは6になります。
この2つの関数を使用すると、次のことができます。中国語と英語の文字を共同計算します 混合文字列のプレースホルダーは何ですか (中国語文字のプレースホルダーは 2、英語文字のプレースホルダーは 1)
<ol class="dp-c"><li class="alt"><span><span class="func">echo</span><span> (</span><span class="func">strlen</span><span>(</span><span class="vars">$str</span><span>) + mb_strlen(</span><span class="vars">$str</span><span>,</span><span class="string">'UTF8'</span><span>)) / 2; </span></span></li></ol>
たとえば、 strlen($str ) 「中国語 1 文字 1 文字」の値は 14、mb_strlen ($str) の値は 6 なので、「中国語 1 文字 1 文字」のプレースホルダーは 10 であると計算できます。
<ol class="dp-c"><li class="alt"><span><span class="func">echo</span><span> mb_internal_encoding(); </span></span></li></ol>
PHP がビルドしました-in 文字列長関数 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」という行が含まれていることを確認してください。 " が存在し、コメントアウトされていない場合は、「未定義の関数の問題」が表示されます。

ホット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)

ホットトピック









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

C言語関数は、コードモジュール化とプログラム構築の基礎です。それらは、宣言(関数ヘッダー)と定義(関数体)で構成されています。 C言語は値を使用してパラメーターをデフォルトで渡しますが、外部変数はアドレスパスを使用して変更することもできます。関数は返品値を持つか、または持たない場合があり、返品値のタイプは宣言と一致する必要があります。機能の命名は、ラクダを使用するか、命名法を強調して、明確で理解しやすい必要があります。単一の責任の原則に従い、機能をシンプルに保ち、メンテナビリティと読みやすさを向上させます。

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

JavaScriptのDOMノードの下でのXpath検索方法の詳細な説明、XPath式に基づいてDOMツリーから特定のノードを見つける必要があることがよくあります。あなたがする必要があるなら...

CとC#には類似点がありますが、それらは完全に異なります。Cはプロセス指向の手動メモリ管理、およびシステムプログラミングに使用されるプラットフォーム依存言語です。 C#は、デスクトップ、Webアプリケーション、ゲーム開発に使用されるオブジェクト指向のガベージコレクション、およびプラットフォーム非依存言語です。

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

C言語関数は再利用可能なコードブロックです。彼らは入力を受け取り、操作を実行し、結果を返すことができます。これにより、再利用性が改善され、複雑さが軽減されます。関数の内部メカニズムには、パラメーターの渡し、関数の実行、および戻り値が含まれます。プロセス全体には、関数インラインなどの最適化が含まれます。単一の責任、少数のパラメーター、命名仕様、エラー処理の原則に従って、優れた関数が書かれています。関数と組み合わせたポインターは、外部変数値の変更など、より強力な関数を実現できます。関数ポインターは機能をパラメーターまたはストアアドレスとして渡し、機能への動的呼び出しを実装するために使用されます。機能機能とテクニックを理解することは、効率的で保守可能で、理解しやすいCプログラムを書くための鍵です。

PHPの...(SPLAT)演算子は、機能パラメーターと配列を開梱するために使用され、コードのシンプルさと効率を向上させます。 1)関数パラメーター解放:アレイ要素をパラメーターとして関数に渡します。 2)配列の開梱:アレイを別の配列または関数パラメーターに解除します。
