Validators

StringLength Validator

This validator allows you to validate if a given string is between a defined length.

Supports only string validation

Zend\Validator\StringLength supports only the validation of strings. Integers, floats, dates or objects can not be validated with this validator.

Supported options

The following options are supported for Zend\Validator\StringLength:

  • encoding: Sets the ICONV encoding to use with the string.
  • min: Sets the minimum allowed length for a string.
  • max: Sets the maximum allowed length for a string.

Default behaviour

By default, this validator checks if a value is between min and max using a default min value of 0 and default max value of NULL (meaning unlimited).

As such, without any options, the validator only checks that the input is a string.

Limiting the maximum string length

To limit the maximum allowed length of a string you need to set the max property. It accepts an integer value as input.

$validator = new Zend\Validator\StringLength(['max' => 6]);

$validator->isValid("Test"); // returns true
$validator->isValid("Testing"); // returns false

You can set the maximum allowed length after instantiation by using the setMax() method; getMax() retrieves the value.

$validator = new Zend\Validator\StringLength();
$validator->setMax(6);

$validator->isValid("Test"); // returns true
$validator->isValid("Testing"); // returns false

Limiting the minimum string length

To limit the minimal required string length, set the min property using an integer value:

$validator = new Zend\Validator\StringLength(['min' => 5]);

$validator->isValid("Test"); // returns false
$validator->isValid("Testing"); // returns true

You can set the value after instantiation using the setMin() method; getMin() retrieves the value.

$validator = new Zend\Validator\StringLength();
$validator->setMin(5);

$validator->isValid("Test"); // returns false
$validator->isValid("Testing"); // returns true

Limiting both minimum and maximum string length

Sometimes you will need to set both a minimum and a maximum string length; as an example, in a username input, you may want to limit the name to a maximum of 30 characters, but require at least three charcters:

$validator = new Zend\Validator\StringLength(['min' => 3, 'max' => 30]);

$validator->isValid("."); // returns false
$validator->isValid("Test"); // returns true
$validator->isValid("Testing"); // returns true

Limiting to a strict length

If you need a strict length, then set the min and max properties to the same value:

$validator = new Zend\Validator\StringLength(['min' => 4, 'max' => 4]);

$validator->isValid('Tes'); // returns false
$validator->isValid('Test'); // returns true
$validator->isValid('Testi'); // returns false

Setting a maximum lower than the minimum

When you try to set a lower maximum value than the specified minimum value, or a higher minimum value as the actual maximum value, the validator will raise an exception.

Encoding of values

Strings are always using a encoding. Even when you don't set the encoding explicitly, PHP uses one. When your application is using a different encoding than PHP itself, you should set an encoding manually.

You can set an encoding at instantiation with the encoding option, or by using the setEncoding() method. We assume that your installation uses ISO and your application it set to ISO. In this case you will see the below behaviour.

$validator = new Zend\Validator\StringLength(['min' => 6]);
$validator->isValid("Ärger"); // returns false

$validator->setEncoding("UTF-8");
$validator->isValid("Ärger"); // returns true

$validator2 = new Zend\Validator\StringLength([
    'min' => 6,
    'encoding' => 'UTF-8',
]);
$validator2->isValid("Ärger"); // returns true

When your installation and your application are using different encodings, then you should always set an encoding manually.

Validation Messages

Using the setMessage() method you can set another message to be returned in case of the specified failure.

$validator = new Zend\Validator\StringLength(['min' => 3, 'max' => 30]);
$validator->setMessage('Youre string is too long. You typed '%length%' chars.', Zend\Validator\StringLength::TOO_LONG);

Found a mistake or want to contribute to the documentation? Edit this page on GitHub!