STRCSPN関数は、文字列内の指定された文字セットの最初の発生を見つけるPHPの関数です。その関数定義は次のとおりです。
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$characters</span></span><span>)
</span></span>
$ haystack :検索する文字列。
$文字:一致する文字セットが含まれています。
STRCSPNの機能は、 $ HayStack文字列の位置インデックス(つまり、文字の数)を、開始位置から開始して、 $ Character Character Setのキャラクターに遭遇するまで返すことです。一致する文字が見つからない場合は、文字列の全長を返します。
例えば:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Hello, World!"</span></span><span>;
</span><span><span class="hljs-variable">$index</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">",!"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span>; </span><span><span class="hljs-comment">// 出力 5,なぜなら","そして"!"に登場 5 少しそして第 7 少し</span></span><span>
</span></span>
URLエンコーディングは、URL内の特殊文字を安全に送信できるようにするためによく使用され、これらの文字がHTTP要求にエラーや曖昧さを引き起こすことを避けます。たとえば、スペースは%20としてエンコードされ、 #は%23としてエンコードされ、 &&は%26などとしてエンコードされます。
特にクエリ文字列からパラメーターを抽出する場合、URLエンコードを解析する場合、これらの特殊文字を適切に処理する方法を検討する必要があることがよくあります。従来の文字列セグメンテーション方法は、これらの特殊文字の存在により、解析エラーにつながる可能性があります。
URLでクエリ文字列を解析する必要がある場合、またはURLから特定のパラメーターの値を抽出する必要がある場合、 strcspnはターゲットキャラクターの発生場所を見つけるのに非常に効果的です。特に複雑なエンコーディングを扱う場合、 StrcSpnは、傍受された文字列の開始位置と終了位置を正確に制御できます。
URLエンコードを含むクエリ文字列があり、そこから特定のパラメーターの値を抽出する必要があるとします。
<span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">"https://example.com/page?name=John+Doe&age=25&city=New%20York"</span></span><span>;
</span></span>
名前パラメーターの値、つまりJohn+doeの値を抽出する場合は、 strcspnを介して正確に見つけることができます。
<span><span><span class="hljs-comment">// 探す name= 次の文字列</span></span><span>
</span><span><span class="hljs-variable">$param_str</span></span><span> = </span><span><span class="hljs-string">"name=John+Doe&age=25&city=New%20York"</span></span><span>;
</span><span><span class="hljs-variable">$start</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$param_str</span></span><span>, </span><span><span class="hljs-string">"name="</span></span><span>) + </span><span><span class="hljs-number">5</span></span><span>; </span><span><span class="hljs-comment">// 現れる name= 的起始少し置,そしてスキップします "name="</span></span><span>
</span><span><span class="hljs-variable">$end</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$param_str</span></span><span>, </span><span><span class="hljs-variable">$start</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">$value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$param_str</span></span><span>, </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-variable">$end</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>; </span><span><span class="hljs-comment">// 出力 John+Doe</span></span><span>
</span></span>
この例では、 strcspnを使用して、 name =から次のシンボル(または文字列の終わり)まで始まる文字列内の文字の数を見つけ、 John+DOEパラメーター値を効果的に取得します。
URLエンコーディングでは、スペースは通常+としてエンコードされ、 %20もスペースを表します。解析する場合は、解析値を正しく変換できるように特に注意する必要があります。たとえば、URLエンコードされた文字列John+doeがあります。これは、 John Doeに変換する場合にstrcspnを使用して正確に処理できます。
<span><span><span class="hljs-variable">$encoded_str</span></span><span> = </span><span><span class="hljs-string">"John+Doe"</span></span><span>;
</span><span><span class="hljs-variable">$index</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$encoded_str</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">$decoded_str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$encoded_str</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$index</span></span><span>) . </span><span><span class="hljs-string">" "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$encoded_str</span></span><span>, </span><span><span class="hljs-variable">$index</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decoded_str</span></span><span>; </span><span><span class="hljs-comment">// 出力 John Doe</span></span><span>
</span></span>
この方法は、 JohnとDoeを正確に抽出するだけでなく、 STRCSPNを介してURLエンコードされた特殊文字を処理します。
上記の例から、 STRCSPN関数がURLエンコーディングの処理に大きな役割を果たすことがわかります。クエリ文字列のパラメーター値を解析するか、URLでエンコードされた文字を処理するかどうかにかかわらず、 STRCSPNはタスクを効率的かつ正確に完了するのに役立ちます。 STRCSPNのキャラクター検索機能を巧みに活用することにより、従来の文字列セグメンテーション方法によって引き起こされる可能性のあるエラーを回避でき、URLの解析作業をより安定して信頼性を高めることができます。
関連タグ:
URL