strspn

指定したマスク内に含まれる文字からなる文字列の最初のセグメントの長さを探す

説明

int strspn(
    string $string,
    string $characters,
    int $offset = 0,
    intnull $length = null
)

string の中で、 characters 内の文字だけを含む最初の部分の長さを返します。

offsetlength を省略した場合は、string 全体を調べます。 指定した場合は、strspn(substr($string, $offset, $length), $characters) をコールするのと同じ動きになります。 (詳細は substr を参照ください)

たとえば、

<?php
$var = strspn("42 is the answer to the 128th question.", "1234567890");
?>
このコードは、$var2 を代入します。これは、 string の中で "1234567890" 内の文字だけで構成される 最初の部分が "42" であるためです。

パラメータ

string

調べたい文字列。

characters

許可する文字の一覧。

offset

string の中で調べ始める位置。

offset に非負の値を指定すると、 strspnstringoffset 番目の位置から調査を始めます。 たとえば、文字列 'abcdef' において 0 番目の位置にある文字は 'a' で 2 番目の位置にある文字は 'c' のようになります。

offset に負の値を指定すると、 strspnstring の最後から offset 番目の位置から調査を始めます。

length

string 内で調べる部分の長さ。

length に非負の値を指定すると、 string の開始位置から length 文字分の範囲を調査します。

length に負の値を指定すると、 string の調査範囲は 開始位置から始まって string の最後から length だけさかのぼったところまでとなります。

戻り値

string の中で、全て characters の中の文字からなる最初のセグメントの長さを返します。

注意:

offset パラメータを設定した場合は、返される長さはその位置からのものとなります。 string の先頭からの長さではありません。

変更履歴

バージョン 説明
8.0.0 length は、nullable になりました。

例1 strspn の例

<?php
// subjectの最初の文字がmaskのどの文字とも一致しません
var_dump(strspn("foo", "o"));

// subject のオフセット 1 から 2 文字を調べます
var_dump(strspn("foo", "o", 1, 2));

// subject のオフセット 1 から 1 文字を調べます
var_dump(strspn("foo", "o", 1, 1));
?>

上の例の出力は以下となります。

int(0)
int(2)
int(1)

注意

注意: この関数はバイナリデータに対応しています。

参考

  • strcspn