まず、 substr()関数の基本的な使用法を確認しましょう。 subst()関数の関数は、指定された位置から始まり、長さを指定する文字列内のサブストリングを返すことです。構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$文字列:保留中の文字列。
$ start :開始位置、負の数は文字列の最後から始まる計算を示します。
$ length :オプションのパラメーター、サブストリングの長さを示します。省略した場合、 $ startから文字列の最後までの部分が抽出されます。
JSON(JavaScriptオブジェクト表記)は、フロントエンドおよびバックエンドのデータインタラクションによく使用される軽量のデータ交換形式です。典型的なJSONデータ構造は次のとおりです。
<span><span><span class="hljs-punctuation">{</span></span><span>
</span><span><span class="hljs-attr">"name"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-string">"John"</span></span><span><span class="hljs-punctuation">,</span></span><span>
</span><span><span class="hljs-attr">"age"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-number">30</span></span><span><span class="hljs-punctuation">,</span></span><span>
</span><span><span class="hljs-attr">"city"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-string">"New York"</span></span><span>
</span><span><span class="hljs-punctuation">}</span></span><span>
</span></span>
JSONデータには通常、キーと価値のペアの構造が含まれています。キーは文字列であり、値は文字列、数字、ブール、アレイ、またはネストされたオブジェクトでさえあります。 JSON文字列からフィールドの値を抽出すると、通常、 json_decode()関数を使用してPHPオブジェクトまたは連想配列に解析し、対応するキーに直接アクセスします。
次のJSON文字列があるとします。
<span><span><span class="hljs-variable">$json_data</span></span><span> = </span><span><span class="hljs-string">'{"name": "John", "age": 30, "city": "New York"}'</span></span><span>;
</span></span>
データ「名前」というデータを抽出する場合は、理論的にはsubstr()を使用して文字列の一部を抽出できます。例えば:
<span><span><span class="hljs-variable">$substring</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$json_data</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$substring</span></span><span>; </span><span><span class="hljs-comment">// 出力: {"name": "John"}</span></span><span>
</span></span>
この方法はJSON文字列の一部を抽出しますが、いくつかの問題があります。 JSONデータは構造化されたデータ形式であり、 substr()は場所に基づいて文字列を単純に傍受するため、JSONのさまざまな要素間のレベルと関係を理解することは不可能です。 substr()を使用する場合、複雑なJSONデータまたは動的変化のJSON構造では非常に信頼できない位置と長さを手動で計算する必要があります。
構造を解析できません: substr()はバイトのみを動作させ、JSONデータの実際の構造を解析できません。 JSONのキーと値には、さまざまな特殊文字や脱出キャラクターが含まれている場合がありますが、どれも単純な傍受で効果的に処理することはできません。
柔軟性の欠如:JSONデータ構造が変更された場合、文字列の開始位置と長さを手動で計算すると、面倒になり、エラーが発生しやすくなります。
エラー処理の欠如: substr()では、ターゲット文字列が予想されるJSON形式を満たしているかどうかを確認しないため、解析エラーが発生する可能性があります。
JSONデータを処理する正しい方法は、PHPの組み込み関数JSON_DECODE()を使用して、JSON文字列をPHP変数に解析することです。これにより、JSONデータの個々のフィールドに簡単にアクセスできます。例えば:
<span><span><span class="hljs-variable">$json_data</span></span><span> = </span><span><span class="hljs-string">'{"name": "John", "age": 30, "city": "New York"}'</span></span><span>;
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>(</span><span><span class="hljs-variable">$json_data</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// 連想配列に変換します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>]; </span><span><span class="hljs-comment">// 出力: John</span></span><span>
</span></span>
JSONの一部のみを抽出する必要がある場合は、 substr()に依存せずに対応するキーにアクセスすることで実行できます。これはより安全であるだけでなく、より保守可能です。
subst()関数は、JSON文字列から部品を抽出するために使用できますが、JSONデータを処理するための最良のツールではありません。 substr()を使用すると、特にJSONデータ構造が変更された場合、柔軟性のないコードとエラーが発生しやすいことがあります。 JSONデータを処理する場合、最も推奨される方法は、 json_decode()を使用してjson文字列を解析し、アレイまたはオブジェクトを介して必要なデータにアクセスすることです。
JSON文字列が操作されるシナリオの場合、 json_decode()とjson_encode()を組み合わせて使用して、JSONデータをより安全かつ確実に抽出および変更できます。