関数の概要
PHPの strspn 関数は、文字列の先頭から指定した文字集合だけで構成されている部分の長さ(連続した文字数)を取得するための関数です。先頭から順に調べ、指定した文字以外の文字が出現した時点でカウントを停止します。文字列の開始部分が特定の文字だけでできているかチェックしたい場合に便利です。
パラメータの説明
input:対象の文字列。先頭部分を調べたい文字列を指定します。mask:許可する文字の集合を表す文字列です。inputの先頭からこの中の文字だけが連続しているかどうかを確認します。start(オプション):調査を始める位置を指定する整数。省略した場合は0(文字列の先頭)から調べます。length(オプション):調査範囲の長さを指定する整数。省略した場合は文字列の最後まで調べます。
戻り値
文字列の先頭から、maskに含まれる文字のみで構成された連続部分の長さ(文字数)を整数で返します。
該当する文字列がなければ 0 を返します。
使用例
基本的な使い方
<?php
$str = "aaa123bbb";
$length = strspn($str, "a");
echo $length; // 出力: 3
?>
文字列 "aaa123bbb" の先頭から文字 "a" だけが続く部分の長さは3です。
複数文字を指定する例
<?php
$str = "abc123abc";
$length = strspn($str, "abc");
echo $length; // 出力: 3
?>
先頭から文字 a、b、c のいずれかが連続する部分の長さを調べています。ここでは先頭から3文字が対象文字に該当します。
調査開始位置と長さを指定する例
<?php
$str = "zzzabc123abczzz";
$length = strspn($str, "abc", 3, 6);
echo $length; // 出力: 3
?>
文字列の4文字目(0始まりなのでインデックス3)から6文字分を見て、a、b、c の連続部分の長さを取得しています。ここでは「abc」が3文字連続しているため、3が出力されます。
関連する関数
strcspn:maskの文字が最初に現れるまでの連続文字数を調べる関数。strspnと対になる機能。strpos:指定した文字列や文字が最初に現れる位置を取得する関数。substr:文字列の一部分を抽出する関数。strspnの結果と組み合わせて部分文字列を取得する際に便利。
まとめ
strspn は、文字列の先頭から指定した文字集合だけが連続する長さを求める便利な関数です。入力文字列の最初が特定の文字で始まるかを判定したり、許可される文字で構成されているかのチェックに活用できます。文字列の一部分だけを調べるためのオプションもあり、柔軟に使いこなせます。複数の文字を指定できるので、実務でもさまざまな文字列検証シーンで役立つでしょう。
