PHPでは、文字列操作は、開発プロセスで最も一般的に使用される関数の1つです。ユーザー入力の処理、動的コンテンツの生成、または長いテキストから有用な情報の抽出など、文字列を傍受する必要がある場合があります。 PHPは、文字列を効率的に処理するのに役立つ多くの強力な機能を提供します。Substrはその1つです。
substrは、文字列から指定された部分を傍受するためのPHPに組み込み関数です。それを使用すると、文字列のどこからでも簡単に起動して、サブストリングを抽出できます。
関数プロトタイプ:
<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-literal">null</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><span class="hljs-literal">false</span></span><span>
</span></span>
$文字列:傍受する必要がある元の文字列。
$ start :マイナス数になる可能性のある開始位置は、文字列の端から計算が始まることを意味します。
$ length (オプション):インターセプトされた長さ。省略した場合、文字列が開始位置から文字列の最後まで傍受されることを意味します。
文字列「こんにちは、世界!」があるとします。 、左から最初の5文字をインターセプトしたい場合は、 SubstSt関数を使用できます。コードは次のとおりです。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// 出力: Hello</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この例では、 0は文字列の最初の文字から始まることを意味し、 5は長さ5のサブストリングを傍受することを意味します。したがって、出力は「hello」です。
また、動的条件に応じてインターセプトの長さを制御することもできます。たとえば、特定の条件に基づいて文字列の一部のみをインターセプトする場合は、 $ lengthを変数値に設定できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Welcome to PHP world!"</span></span><span>;
</span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-number">7</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$length</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// 出力: Welcome</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
副関数は負のインデックス作成をサポートします。つまり、文字列の右側から傍受できます。これは、右から始まるいくつかの文字列操作を処理するのに非常に役立ちます。
たとえば、文字列の最後の3文字から始めたい場合:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Learning PHP is fun!"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, -</span><span><span class="hljs-number">3</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// 出力: fun</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ここで、 -3は、文字列の最後まで文字列の最後から2番目の文字から傍受することを意味します。
一般的なシナリオは、ファイル名拡張機能を抽出することです。ファイルパスがあり、ファイル拡張子を取得する必要があるとします。これを行うには、 substrとstrpos関数を組み合わせて行うことができます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$file_name</span></span><span> = </span><span><span class="hljs-string">"document.pdf"</span></span><span>;
</span><span><span class="hljs-variable">$dot_position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrpos</span></span><span>(</span><span><span class="hljs-variable">$file_name</span></span><span>, </span><span><span class="hljs-string">'.'</span></span><span>); </span><span><span class="hljs-comment">// 最後のポイントの場所を見つけます</span></span><span>
</span><span><span class="hljs-variable">$extension</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$file_name</span></span><span>, </span><span><span class="hljs-variable">$dot_position</span></span><span> + </span><span><span class="hljs-number">1</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">$extension</span></span><span>; </span><span><span class="hljs-comment">// 出力: pdf</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この例では、 STRRPOSを使用してファイル名の最後のポイントの位置を見つけ、 substSTRを使用してポイントの位置からインターセプトを開始してファイル拡張子を取得します。
範囲外の$ startおよび$ lengthパラメーター: $ startパラメーターが文字列の長さよりも大きい場合、または$ lengthが残りの文字数を超えている場合、 substr関数は空の文字列または完全な文字列を返します。不必要な間違いを避けるために、これらの状況に注意してください。
サポートマルチバイト文字セット:PHPの副関数には、マルチバイト文字(漢字など)にいくつかの制限がある場合があります。マルチバイト文字セットを扱う必要がある場合は、 substの代わりにMB_Substr関数を使用することをお勧めします。
副関数は、PHPの非常に実用的なツールです。指定された長さのサブストリングを左からインターセプトし、右からの部分的な文字列の傍受をサポートするのに役立ちます。この関数を合理的に使用することにより、文字列処理を大幅に簡素化でき、コードの読みやすさと効率を改善できます。実際の開発では、 SubstStructionを使用して、さまざまな文字列抽出タスクを柔軟に完了することができます。これは、固定長の傍受に適しているだけでなく、動的条件下での傍受要件にも対処できます。