strcspn

Find length of initial segment not matching mask

&reftitle.description; `int` `strcspn` `string` `string` `string` `characters` `int` `offset` 0 ``int``null```length`&null;

Returns the length of the initial segment of `string` which does not contain any of the characters in `characters`.

If `offset` and `length` are omitted, then all of `string` will be examined. If they are included, then the effect will be the same as calling `strcspn(substr($string, $offset, $length), $characters)` (see function.substr for more information).

&reftitle.parameters;

`string`

- The string to examine.

`characters`

- The string containing every disallowed character.

`offset`

- The position in `string` to start searching.

  If `offset` is given and is non-negative, then `strcspn` will begin examining `string` at the `offset`'th position. For instance, in the string '`abcdef`', the character at position `0` is '`a`', the character at position `2` is '`c`', and so forth.

  If `offset` is given and is negative, then `strcspn` will begin examining `string` at the `offset`'th position from the end of `string`.

`length`

- The length of the segment from `string` to examine.

  If `length` is given and is non-negative, then `string` will be examined for `length` characters after the starting position.

  If `length` is given and is negative, then `string` will be examined from the starting position up to `length` characters from the end of `string`.

&reftitle.returnvalues;

Returns the length of the initial segment of `string` which consists entirely of characters not in `characters`.

When a `offset` parameter is set, the returned length is counted starting from this position, not from the beginning of `string`.

&reftitle.changelog;

&Version; | &Description;
8.4.0 | Prior to PHP 8.4.0, when `characters` was the empty string, the search would incorrectly stop at the first null byte in `string`.
8.0.0 | `length` is nullable now.

&reftitle.examples;

### `strcspn` example

    <?php
    $a = strcspn('banana', 'a');
    $b = strcspn('banana', 'abcd');
    $c = strcspn('banana', 'z');
    $d = strcspn('abcdhelloabcd', 'a', -9);
    $e = strcspn('abcdhelloabcd', 'a', -9, -5);

    var_dump($a);
    var_dump($b);
    var_dump($c);
    var_dump($d);
    var_dump($e);
    ?>

&example.outputs;

    int(1)
    int(0)
    int(6)
    int(5)
    int(4)

&reftitle.notes; ¬e.bin-safe;
&reftitle.seealso;

- `strspn`