関数の概要
strcspn は、PHPで文字列の先頭から指定した文字のいずれかが現れるまでの長さを取得する関数です。指定文字を含まない部分の長さを知りたいときに便利で、文字列処理や入力チェックなどでよく使われます。
パラメータの説明
string $subject:検索対象の文字列。string $mask:この文字列に含まれる任意の文字を$subject内で探します。この中のどれかの文字に遭遇した時点の位置が結果となります。int $start (オプション):検索を開始する位置。省略すると 0(文字列の先頭)から始まります。int $length (オプション):検索する範囲の長さ。省略すると文字列の末尾まで検索します。
戻り値
文字列 $subject の先頭から、$mask に含まれるいずれかの文字が最初に現れるまでの連続した文字数を整数で返します。もし指定文字が一つも見つからなければ、指定された範囲の長さ、もしくは文字列の長さが返されます。
使用例
基本的な使い方
$text = "hello world";
$pos = strcspn($text, " ");
echo $pos; // 出力:5
この例では、文字列 “hello world” の中で、スペースが最初に現れる位置までの文字数(5)が取得されています。
複数の文字を指定する例
$text = "abcdefg123";
$pos = strcspn($text, "1234567890");
echo $pos; // 出力:7
数字のいずれかが出てくるまでの長さを取得しています。数字は7文字目に初めて出現するため、結果は 7 になります。
開始位置を指定する例
$text = "abcdefg123";
$pos = strcspn($text, "1234567890", 5);
echo $pos; // 出力:2
5文字目(0スタートなので ‘f’)から検索を開始します。’f’ から見て最初に数字が出るまで ‘g’ と ‘1’ の間に2文字あります。
長さを限定する例
$text = "abcdefg123";
$pos = strcspn($text, "1234567890", 0, 5);
echo $pos; // 出力:5
最初の5文字だけで数字が現れるか調べています。5文字の中には数字がないため結果は5となります。
関連する関数
strspn:指定した文字だけが連続している長さを取得する関数。strpos:特定の文字が最初に現れる位置を取得する関数。strchr:指定文字以降の部分文字列を取得する関数。
まとめ
strcspn は、文字列の先頭から指定した文字のいずれかが出現するまでの長さを簡単に取得できる便利な関数です。文字列チェックや解析、置換処理の前段階などで実務的に役立ちます。開始位置や検索範囲を調整することも可能なので、より柔軟な文字列操作に活用しましょう。
