PHPackages                             nguyenanhung/validation - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. nguyenanhung/validation

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

nguyenanhung/validation
=======================

Template for Validation - Basic, Simple and Lightweight

v1.0.3(1y ago)17.0k↓92.9%1MITPHPPHP &gt;=7.0

Since Jul 4Pushed 1y ago2 watchersCompare

[ Source](https://github.com/nguyenanhung/validation)[ Packagist](https://packagist.org/packages/nguyenanhung/validation)[ Docs](https://github.com/nguyenanhung/validation)[ RSS](/packages/nguyenanhung-validation/feed)WikiDiscussions main Synced yesterday

READMEChangelog (4)Dependencies (1)Versions (5)Used By (1)

[![Latest Stable Version](https://camo.githubusercontent.com/bd4fbf44b5943167c70a7e39452debaf970ebf9b0833779d0c7018905da2764b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6e677579656e616e68756e672f76616c69646174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nguyenanhung/validation)[![Total Downloads](https://camo.githubusercontent.com/69d928eff0820e41a97caf3454aa89e59923d145624b340eb8b24c146e1604dd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6e677579656e616e68756e672f76616c69646174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nguyenanhung/validation)[![Daily Downloads](https://camo.githubusercontent.com/df881ecf4b7a6e1603cdb1247d183bf07a9ead673b74f5a306c8fe75beb2139e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64642f6e677579656e616e68756e672f76616c69646174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nguyenanhung/validation)[![Monthly Downloads](https://camo.githubusercontent.com/e57a5fff0e006c8a0246ac01aff249ce1ce67def58d508470a059c74df71246c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f6e677579656e616e68756e672f76616c69646174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nguyenanhung/validation)[![License](https://camo.githubusercontent.com/25e274dc7bc61c6d8799351ee7a654b26d79ee7f73589d33ec3bd7cab935614b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6e677579656e616e68756e672f76616c69646174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nguyenanhung/validation)[![PHP Version Require](https://camo.githubusercontent.com/74fb265776b7800ef56949a44a2177c3ce55b1ad7ce20d5a8c2cacb7398f2fc2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f6e677579656e616e68756e672f76616c69646174696f6e2f706870)](https://packagist.org/packages/nguyenanhung/validation)

Validation Library
==================

[](#validation-library)

Is a standalone PHP data validation and filtering class that makes validating any data easy and painless without the reliance on a framework. GUMP is open-source since 2013.

- [Validation Library](#validation-library)
    - [Install with composer](#install-with-composer)
        - [Short format example for validations](#short-format-example-for-validations)
        - [Short format example for filtering](#short-format-example-for-filtering)
        - [Long format example](#long-format-example)

        - [⭐ Available Validators](#star-available-validators)
        - [⭐ Available Filters](#star-available-filters)
            - [Other Available Methods](#other-available-methods)

            - [Creating your own validators and filters](#creating-your-own-validators-and-filters)
        - [Global configuration](#global-configuration)
        - [Contact &amp; Support](#contact--support)

#### Install with composer

[](#install-with-composer)

```
composer require nguyenanhung/validation

```

### Short format example for validations

[](#short-format-example-for-validations)

```
use nguyenanhung\Validation\Validation;
$is_valid = Validation::is_valid(array_merge($_POST, $_FILES), [
    'username'       => 'required|alpha_numeric',
    'password'       => 'required|between_len,4;100',
    'avatar'         => 'required_file|extension,png;jpg',
    'tags'           => 'required|alpha_numeric', // ['value1', 'value3']
    'person.name'    => 'required',               // ['person' => ['name' => 'value']]
    'persons.*.age'  => 'required'                // ['persons' => [
                                                  //      ['name' => 'value1', 'age' => 20],
                                                  //      ['name' => 'value2']
                                                  // ]]
]);

// 1st array is rules definition, 2nd is field-rule specific error messages (optional)
$is_valid = Validation::is_valid(array_merge($_POST, $_FILES), [
    'username' => ['required', 'alpha_numeric'],
    'password' => ['required', 'between_len' => [6, 100]],
    'avatar'   => ['required_file', 'extension' => ['png', 'jpg']]
], [
    'username' => ['required' => 'Fill the Username field please.'],
    'password' => ['between_len' => '{field} must be between {param[0]} and {param[1]} characters.'],
    'avatar'   => ['extension' => 'Valid extensions for avatar are: {param}'] // "png, jpg"
]);

if ($is_valid === true) {
    // continue
} else {
    var_dump($is_valid); // array of error messages
}
```

### Short format example for filtering

[](#short-format-example-for-filtering)

```
use nguyenanhung\Validation\Validation;
$filtered = Validation::filter_input([
    'field'       => ' text ',
    'other_field' => 'Cool Title'
], [
    'field'       => ['trim', 'upper_case'],
    'other_field' => 'slug'
]);

var_dump($filtered['field']); // result: "TEXT"
var_dump($filtered['other_field']); // result: "cool-title"
```

### Long format example

[](#long-format-example)

```
use nguyenanhung\Validation\Validation;
$validation = new Validation();

// set validation rules
$validation->validation_rules([
    'username'    => 'required|alpha_numeric|max_len,100|min_len,6',
    'password'    => 'required|max_len,100|min_len,6',
    'email'       => 'required|valid_email',
    'gender'      => 'required|exact_len,1|contains,m;f',
    'credit_card' => 'required|valid_cc'
]);

// set field-rule specific error messages
$validation->set_fields_error_messages([
    'username'      => ['required' => 'Fill the Username field please, its required.'],
    'credit_card'   => ['extension' => 'Please enter a valid credit card.']
]);

// set filter rules
$validation->filter_rules([
    'username' => 'trim|sanitize_string',
    'password' => 'trim',
    'email'    => 'trim|sanitize_email',
    'gender'   => 'trim',
    'bio'      => 'noise_words'
]);

// on success: returns array with same input structure, but after filters have run
// on error: returns false
$valid_data = $validation->run($_POST);

if ($validation->errors()) {
    var_dump($validation->get_readable_errors()); // ['Field Somefield is required.']
    // or
    var_dump($validation->get_errors_array()); // ['field' => 'Field Somefield is required']
} else {
    var_dump($valid_data);
}
```

⭐ Available Validators
----------------------

[](#star-available-validators)

**Important:** If you use Pipe or Semicolon as parameter value, you **must** use array format.

```
use nguyenanhung\Validation\Validation;
$is_valid = Validation::is_valid(array_merge($_POST, $_FILES), [
    'field' => 'regex,/partOf;my|Regex/', // NO
    'field' => ['regex' => '/partOf;my|Regex/'] // YES
]);
```

RuleDescription**required**Ensures the specified key value exists and is not empty (not null, not empty string, not empty array).**contains**,one;two;use array format if one of the values contains semicolonsVerify that a value is contained within the pre-defined value set.**contains\_list**,value1;value2Verify that a value is contained within the pre-defined value set. Error message will NOT show the list of possible values.**doesnt\_contain\_list**,value1;value2Verify that a value is contained within the pre-defined value set. Error message will NOT show the list of possible values.**boolean**,strictDetermine if the provided value is a valid boolean. Returns true for: yes/no, on/off, 1/0, true/false. In strict mode (optional) only true/false will be valid which you can combine with boolean filter.**valid\_email**Determine if the provided email has valid format.**max\_len**,240Determine if the provided value length is less or equal to a specific value.**min\_len**,4Determine if the provided value length is more or equal to a specific value.**exact\_len**,5Determine if the provided value length matches a specific value.**between\_len**,3;11Determine if the provided value length is between min and max values.**alpha**Determine if the provided value contains only alpha characters.**alpha\_numeric**Determine if the provided value contains only alpha-numeric characters.**alpha\_dash**Determine if the provided value contains only alpha characters with dashed and underscores.**alpha\_numeric\_dash**Determine if the provided value contains only alpha numeric characters with dashed and underscores.**alpha\_numeric\_space**Determine if the provided value contains only alpha numeric characters with spaces.**alpha\_space**Determine if the provided value contains only alpha characters with spaces.**numeric**Determine if the provided value is a valid number or numeric string.**integer**Determine if the provided value is a valid integer.**float**Determine if the provided value is a valid float.**valid\_url**Determine if the provided value is a valid URL.**url\_exists**Determine if a URL exists &amp; is accessible.**valid\_ip**Determine if the provided value is a valid IP address.**valid\_ipv4**Determine if the provided value is a valid IPv4 address.**valid\_ipv6**Determine if the provided value is a valid IPv6 address.**valid\_cc**Determine if the input is a valid credit card number.**valid\_name**Determine if the input is a valid human name.**street\_address**Determine if the provided input is likely to be a street address using weak detection.**iban**Determine if the provided value is a valid IBAN.**date**,d/m/YDetermine if the provided input is a valid date (ISO 8601) or specify a custom format (optional).**min\_age**,18Determine if the provided input meets age requirement (ISO 8601). Input should be a date (Y-m-d).**max\_numeric**,50Determine if the provided numeric value is lower or equal to a specific value.**min\_numeric**,1Determine if the provided numeric value is higher or equal to a specific value.**starts**,ZDetermine if the provided value starts with param.**required\_file**Determine if the file was successfully uploaded.**extension**,png;jpg;gifCheck the uploaded file for extension. Doesn't check mime-type yet.**equalsfield**,other\_field\_nameDetermine if the provided field value equals current field value.**guidv4**Determine if the provided field value is a valid GUID (v4)**phone\_number**Determine if the provided value is a valid phone number.**regex**,/test-\[0-9\]{3}/Custom regex validator.**valid\_json\_string**Determine if the provided value is a valid JSON string.**valid\_array\_size\_greater**,1Check if an input is an array and if the size is more or equal to a specific value.**valid\_array\_size\_lesser**,1Check if an input is an array and if the size is less or equal to a specific value.**valid\_array\_size\_equal**,1Check if an input is an array and if the size is equal to a specific value.**valid\_twitter**Determine if the provided value is a valid Twitter account.

⭐ Available Filters
-------------------

[](#star-available-filters)

Filter rules can also be any PHP native function (e.g.: trim).

FilterDescription**noise\_words**Replace noise words in a string ([http://tax.cchgroup.com/help/Avoiding\_noise\_words\_in\_your\_search.htm](http://tax.cchgroup.com/help/Avoiding_noise_words_in_your_search.htm)).**rmpunctuation**Remove all known punctuation from a string.**urlencode**Sanitize the string by urlencoding characters.**htmlencode**Sanitize the string by converting HTML characters to their HTML entities.**sanitize\_email**Sanitize the string by removing illegal characters from emails.**sanitize\_numbers**Sanitize the string by removing illegal characters from numbers.**sanitize\_floats**Sanitize the string by removing illegal characters from float numbers.**sanitize\_string**Sanitize the string by removing any script tags.**boolean**Converts \['1', 1, 'true', true, 'yes', 'on'\] to true, anything else is false ('on' is useful for form checkboxes).**basic\_tags**Filter out all HTML tags except the defined basic tags.**whole\_number**Convert the provided numeric value to a whole number.**ms\_word\_characters**Convert MS Word special characters to web safe characters. (\[“ ”\] =&gt; ", \[‘ ’\] =&gt; ', \[–\] =&gt; -, \[…\] =&gt; ...)**lower\_case**Converts to lowercase.**upper\_case**Converts to uppercase.**slug**Converts value to url-web-slugs.**trim**Remove spaces from the beginning and end of strings (PHP).

#### Other Available Methods

[](#other-available-methods)

```
use nguyenanhung\Validation\Validation;
/**
 * This is the most flexible validation "executer" because of it's return errors format.
 *
 * Returns bool true when no errors.
 * Returns array of errors with detailed info. which you can then use with your own helpers.
 * (field name, input value, rule that failed and it's parameters).
 */
$validation->validate(array $input, array $ruleset);

/**
 * Filters input data according to the provided filterset
 *
 * Returns array with same input structure but after filters have been applied.
 */
$validation->filter(array $input, array $filterset);

// Sanitizes data and converts strings to UTF-8 (if available), optionally according to the provided field whitelist
$validation->sanitize(array $input, $whitelist = null);

// Override field names in error messages
Validation::set_field_name('str', 'Street');
Validation::set_field_names([
    'str' => 'Street',
    'zip' => 'ZIP Code'
]);

// Set custom error messages for rules.
Validation::set_error_message('required', '{field} is required.');
Validation::set_error_messages([
    'required'    => '{field} is required.',
    'valid_email' => '{field} must be a valid email.'
]);

// Strips and encodes unwanted characters
Validation::xss_clean(array $data);
```

### Creating your own validators and filters

[](#creating-your-own-validators-and-filters)

Adding custom validators and filters is made easy by using callback functions.

```
use nguyenanhung\Validation\Validation;
/**
 * You would call it like 'equals_string,someString'
 *
 * @param string $field  Field name
 * @param array  $input  Whole input data
 * @param array  $params Rule parameters. This is usually empty array by default if rule does not have parameters.
 * @param mixed  $value  Value.
 *                       In case of an array ['value1', 'value2'] would return one single value.
 *                       If you want to get the array itself use $input[$field].
 *
 * @return bool   true or false whether the validation was successful or not
 */
Validation::add_validator("equals_string", function($field, array $input, array $params, $value) {
    return $value === $params;
}, 'Field {field} does not equal to {param}.');

/**
 * @param string $value Value
 * @param array  $param Filter parameters (optional)
 *
 * @return mixed  result of filtered value
 */
Validation::add_filter("upper", function($value, array $params = []) {
    return strtoupper($value);
});
```

Alternately, you can simply create your own class that extends Validation. You only have to have in mind:

- For filter methods, prepend the method name with "filter\_".
- For validator methods, prepend the method name with "validate\_".

```
use nguyenanhung\Validation\Validation;
class MyClass extends Validation
{
    protected function filter_myfilter($value, array $params = [])
    {
        return strtoupper($value);
    }

    protected function validate_myvalidator($field, array $input, array $params = [], $value)
    {
        return $input[$field] === 'good_value';
    }
}

$validator = new MyClass();
$validated = $validator->validate($_POST, $rules);
```

Global configuration
--------------------

[](#global-configuration)

This configuration values allows you to change default rules delimiters (e.g.: `required|contains,value1;value2` to `required|contains:value1,value2`).

```
use nguyenanhung\Validation\Validation;
Validation::$rules_delimiter = '|';

Validation::$rules_parameters_delimiter = ',';

Validation::$rules_parameters_arrays_delimiter = ';';
```

Contact &amp; Support
---------------------

[](#contact--support)

If any question &amp; request, please contact following information

NameEmailSkypeFacebookHung Nguyennguyenanhung5891@nguyenanhungFrom Vietnam with Love &lt;3

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 75% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~270 days

Total

4

Last Release

650d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3694ef9f3367ff9f6bcd668ca1d6726e3c55e6fd379cba9c2d4ab6a24595fbd8?d=identicon)[7135k13m](/maintainers/7135k13m)

---

Top Contributors

[![hungnguyenhp](https://avatars.githubusercontent.com/u/6778496?v=4)](https://github.com/hungnguyenhp "hungnguyenhp (6 commits)")[![nguyenanhung](https://avatars.githubusercontent.com/u/9348255?v=4)](https://github.com/nguyenanhung "nguyenanhung (2 commits)")

---

Tags

phpvalidationhelperlibrary

### Embed Badge

![Health badge](/badges/nguyenanhung-validation/health.svg)

```
[![Health](https://phpackages.com/badges/nguyenanhung-validation/health.svg)](https://phpackages.com/packages/nguyenanhung-validation)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
