strspn

(PHP 4, PHP 5, PHP 7)

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

説明

strspn ( string $subject , string $mask [, int $start [, int $length ]] ) : int

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

startlength を省略した場合は、subject 全体を調べます。 指定した場合は、strspn(substr($subject, $start, $length), $mask) (詳細は substr を参照ください) をコールするのと同じ働きをします。

たとえば、

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

パラメータ

subject

調べたい文字列。

mask

許可する文字の一覧。

start

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

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

start に負の値を指定すると、 strspn()subject の最後から start 番目の位置から調査を始めます。

length

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

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

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

返り値

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

注意:

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

例1 strspn() の例

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

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

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

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

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

注意

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

参考

  • strcspn() - マスクにマッチしない最初のセグメントの長さを返す