現在の位置: ホーム> 最新記事一覧> strcspn関数は、文字列内の文字セットの位置をどのように計算しますか?詳細な説明

strcspn関数は、文字列内の文字セットの位置をどのように計算しますか?詳細な説明

gitbox 2025-08-25

PHPでは、 StrcSPNは、指定された文字セットにない文字列内の最初の文字の位置を計算するために使用される関数です。そのフルネームは「文字列補体スパン」です。つまり、文字列の先頭から始まり、指定された文字セットに属さない最初の文字を見つけ、文字のインデックス位置を返します。この関数は、特に文字列内の文字の最初の場所を見つける必要がある場合、文字列処理によく使用されます。

strcspn関数の構文

<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">$charlist</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-number">0</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>
  • $ haystack :検索するターゲット文字列。

  • $ CHARLIST :見つけるべき文字セット、つまり複数の文字を含む文字列を定義します。

  • $ start :オプション、検索を開始する場所を指定します。デフォルトは0です。

  • $ length :オプション、検索時にチェックする最大長を指定すると、デフォルトはnullであり、 $ startから最後までの位置を示します。

strcspnを理解する方法は?

STRCSPN関数は、指定された文字列$ haystackで始まり、 $ charlistのキャラクターセットに属さない最初のキャラクターを探します。次に、このキャラクターの位置を返します。この位置は、文字列内の文字のインデックス位置(0から始まる)です。

たとえば、文字列ABCDEFがあり、文字セットがABCであると仮定し、 STRCSPNは文字列3の文字セットABCに属さない最初の文字の位置を返します。

サンプルコード

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// サンプル文字列</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"abcdef"</span></span><span>;
</span><span><span class="hljs-comment">// 文字セットを定義します</span></span><span>
</span><span><span class="hljs-variable">$charlist</span></span><span> = </span><span><span class="hljs-string">"abc"</span></span><span>;

</span><span><span class="hljs-comment">// 使用 strcspn 関数文字セットに属さない最初の場所を見つけます</span></span><span>
</span><span><span class="hljs-variable">$position</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-variable">$charlist</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-string">"キャラクターセットにない最初のキャラクターの位置は: "</span></span><span> . </span><span><span class="hljs-variable">$position</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

出力:

 <span><span><span class="hljs-section">キャラクターセットにない最初のキャラクターの位置は: 3</span></span><span>
</span></span>

この例では、文字列「ABCDEF」は、 AB 、およびCから始まり、最初の文字Dが遭遇し、文字セットABCにないため、返された位置は3です。

stracspnの実用的なアプリケーション

  1. 文字が文字セットに属しているかどうかを確認します。データ処理または検証中、 STRCSPNは、入力データに違法文字または望ましくない文字が含まれているかどうかを判断するのに役立ちます。たとえば、ユーザー名に文字または番号のみが含まれているかどうかを確認します。

  2. 抽出サブストリング:文字列から特定の文字の前にすべての文字を抽出する必要がある場合は、 strcspnsubstr関数を組み合わせて実装できます。たとえば、最初の番号の前にすべての文字を抽出する場合:

     <span><span><span class="hljs-meta">&lt;?php</span></span><span>
    </span><span><span class="hljs-variable">$input</span></span><span> = </span><span><span class="hljs-string">"abc123xyz"</span></span><span>;
    </span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>, </span><span><span class="hljs-string">'0123456789'</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">$input</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$position</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">// 出力 "abc"</span></span><span>
    </span><span><span class="hljs-meta">?&gt;</span></span><span>
    </span></span>

    このコードは、「ABC」を返します。これは、すべての文字が1番の前に抽出されるためです。

  3. 特別な文字セットの処理STRCSPNは、文字列内の特殊文字や空白文字を見つける必要がある場合にも非常に便利です。たとえば、文字列内の最初のスペースまたは句読点の位置を見つけます。

     <span><span><span class="hljs-meta">&lt;?php</span></span><span>
    </span><span><span class="hljs-variable">$input</span></span><span> = </span><span><span class="hljs-string">"hello, world!"</span></span><span>;
    </span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$input</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-string">"最初の非空間、コンマ、期間、感嘆符のキャラクターの位置はです: "</span></span><span> . </span><span><span class="hljs-variable">$position</span></span><span>;
    </span><span><span class="hljs-meta">?&gt;</span></span><span>
    </span></span>

    このコードを使用して、いくつかの一般的な句読点を除外し、文字列の実際のコンテンツを返すことができます。

結論は

STRCSPNは、特定の文字セットに属さない文字列の文字位置を開発者に正確に見つけるのに役立つ強力なPHP文字列処理機能です。実際の開発、特に文字列検証や解析などのシナリオでは、 StrcSPNは非常に実用的なツールであり、コードの効率と読みやすさを最適化するために使用できます。この関数をマスターすると、文字列操作がより柔軟で効率的になります。