This package is abandoned and no longer maintained. The author suggests using the azi/envalid package instead.

Server side user input validation library

2.0 2015-08-16 18:14 UTC

This package is auto-updated.

Last update: 2022-02-01 12:45:52 UTC


PHP Server Side Form Validation

Build Status Codacy Badge Latest Stable Version Total Downloads Latest Unstable Version License Join the chat at

This is a small PHP package that makes it easy to validate forms in your project specially larger forms.

Installation Guide:

You can install Validator either via package download from github or via composer install. I encourage you to do the latter:

  "require": {
    "azi/validator": "2.*"

##Usage to get started

  • require composer autoloader
require 'vendor/autoload.php';
  • Instantiate the Validator class
use azi\Validator;
$v = new Validator();
  • Define Rules for each form field
  $rules = array(
        'name' => 'alpha|required',
        'age'  => 'num|required',
  • Run the validator
$v->validate( $_POST, $rules );
  • check validator for errors, if validation fails redirect back to the form
if ( !$v->passed() ) {
  • show validation errors to user
 <label>Name :
      <input type="text" name="name">
 <?=  Validator::error('name'); ?>

you can wrap error messages with custom HTML markup

  Validator::error('confirm_password', '<span class="error">:message</span>');


  • required
  • num
  • alpha
  • alnum
  • email
  • ip
  • url
  • min:number
  • max:number
  • same:field_name

Custom Expressions & Messages

  • Custom Expressions

you can register your custom RegExp before running the validator

$v->registerExpression( 'cnic', '#^([0-9]{13})$#', 'Invalid CNIC number' );

registerExpression method takes 3 arguments

  • expressionID - unique name for the expression
  • pattern - the RegExp string
  • message [optional] - the error message to be retured if the validation fails
Validator::registerExpression($expressionID , $pattern, $message)
  • Custom Messages

you can also pass a custom error message with each rule

 $rules['full_name'] = "required--Please Enter your name";

Registring custom rules

this weekend (15th Aug 2015) i was working on a must have feature in validator which is accepting custom rules at run time. here is how you can do it from now on.

$validator = new azi\validator();
$validator->addRule('isUnique', function($field, $value){
    $query = mysqli_query("SELECT * FROM users WHERE username = $value");
    if($query->affected_rows > 0) {
        return "Username '$value' already exists please try something else";
    return true;

now you can use this newly registered rule.

    $_POST, ['username' => 'isUnique|required']

now you have so much power on your fields validation do whatever you want in Closure you passed to Validator::addRule() as 2nd argument.

Conditional Rules

you can spacify conditional rules for a field

 $rules['age'] = 'if:gender[Male](required|min:2|num)';

Comparison Rules

you can also compare a field with another

  $rules['password'] = 'required|min:8';
  $rules['confirm_password'] = 'same:password';