現在の位置: ホーム> 最新記事一覧> PHPでstrcspn関数を使用する方法は?クイックスタートチュートリアル!

PHPでstrcspn関数を使用する方法は?クイックスタートチュートリアル!

gitbox 2025-08-16

PHPでは、 STRCSPN関数は非常に実用的な文字列処理関数であり、指定された文字が発生するまで、文字列の先頭から渡された文字の数を返すために使用されます。この関数は、特定の文字が含まれていない文字列の一部を処理するのに特に適しています。また、特定の特定の文字を探すときは、相対的な位置を取得する必要があります。

strcspn関数の構文

<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><span class="hljs-keyword">int</span></span><span>
</span></span>

パラメーター説明:

  • $ haystack :ターゲット文字列。これは、確認する文字列です。

  • $ CHARLIST :指定された文字リスト、 STRCSPNは、リスト内の文字が見つかるまで$ HayStack文字列をスキャンします。

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

  • $ length (オプション):検索の文字長さを制限します。デフォルトはnullです。文字列全体が検索されていることを示します。

関数は値を返します

strcspn関数は整数値を返し、文字列の先頭から$ charlistのキャラクターに遭遇する場所までの位置を示します(または、キャラクターリストの文字に遭遇した場合、スキャンされた位置を返します)。指定された文字が遭遇しない場合、文字列全体の長さが返されます。

使用の例

いくつかの簡単な例を使用して、 strcspn関数の使用を示しましょう。

例1:文字列内の指定された文字の位置を見つける

<span><span><span class="hljs-meta">&lt;?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">$characters</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-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$characters</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The first occurrence of a character from the list is at position: <span class="hljs-subst">$position</span></span></span><span>";
</span><span><span class="hljs-comment">// 出力:The first occurrence of a character from the list is at position: 5</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例では、 strcspnは文字列「hello、world!」から始まります。キャラクター'' (スペース)が遭遇するまで。戻る結果は5で、6番目の文字がスペースであることを示します(配列インデックスは0から始まります)。

例2:検索を開始する場所を指定します

<span><span><span class="hljs-meta">&lt;?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">$characters</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-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$characters</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The first occurrence of a character from the list after position 6 is at: <span class="hljs-subst">$position</span></span></span><span>";
</span><span><span class="hljs-comment">// 出力:The first occurrence of a character from the list after position 6 is at: 8</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例では、6番目のキャラクターから見上げ始めることを指定します。スペース文字が5番目の位置にある場合でも、関数は次のスペース文字が遭遇するまで位置6を見始め、結果は8です。

例3:文字リストを指定していません

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"123456789"</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">$string</span></span><span>, </span><span><span class="hljs-string">"678"</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The first occurrence of a character from the list is at position: <span class="hljs-subst">$position</span></span></span><span>";
</span><span><span class="hljs-comment">// 出力:The first occurrence of a character from the list is at position: 6</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例では、 strcspnは文字列内の「6」「7」 、または「8」を探します。関数によって返される位置は、6番目の文字(つまり、キャラクター'6' )であり、キャラクターリスト678の最初の発生がある位置を示しています。

実用的なアプリケーションシナリオ

  1. 不要な文字を明確にする
    STRCSPNは、文字列の無関係な文字をクリアするために使用できます。たとえば、数字を含む文字列を抽出し、非数字を削除します。

     <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">$digits</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-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>, </span><span><span class="hljs-string">"abcdefghijklmnopqrstuvwxyz"</span></span><span>));
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Extracted digits: <span class="hljs-subst">$digits</span></span></span><span>"; </span><span><span class="hljs-comment">// 出力:Extracted digits: 123</span></span><span>
    </span></span>
  2. パスワード検証
    パスワードに違法文字(コントロール文字やスペースなど)が含まれているかどうかを検出する場合、 STRCSPNは非常に適切なツールです。

     <span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">"secure@123"</span></span><span>;
    </span><span><span class="hljs-variable">$illegalChars</span></span><span> = </span><span><span class="hljs-string">" \t\r\n"</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$illegalChars</span></span><span>) == </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Password is valid!"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Password contains illegal characters!"</span></span><span>;
    }
    </span></span>
  3. テキストクリーンアップ
    句読点を含む可能性のあるテキストがあるとし、 strcspnを使用して、最初の句読点のない部分を簡単に抽出できます。

要約します

STRCSPN関数は、開発者が文字列内の特定の文字の位置を見つけるか、文字列から有効な部品を切り取るのに役立つ効率的で柔軟な文字列処理ツールです。この関数の使用を習得することにより、文字列データを効果的に処理および分析し、コードの明確さと保守性を向上させることができます。