Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

maplephp/validate

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MaplePHP - Validation

MaplePHP - Validation is a lightweight and powerful PHP library designed to simplify the validation of various data inputs. Whether you're verifying if a value is a valid email or phone number, ensuring string lengths, or performing more advanced checks like credit card numbers and dates, MaplePHP - Validation offers a comprehensive and intuitive approach. With its wide range of built-in validators and simple syntax, it makes handling complex validation tasks easier, leading to cleaner and more reliable code.


Installation

Install the library via Composer:

composer require maplephp/validate

Getting Started

You can validate values by instantiating the Validator class. There are two ways to do this:

use MaplePHP\Validate\Validator;

// Option 1: Create an instance
$inp = new Validator("Lorem ipsum dolor");
var_dump($inp->length(1, 200)); // true

// Option 2: Use the static method for cleaner syntax
$valid = Validator::value("Lorem ipsum dolor")->length(1, 200);
var_dump($valid); // true

Validating Nested Data

You can traverse nested arrays or objects and validate specific values using dot notation:

$inp = new Validator([
  "user" => [
    "name" => "John Doe",
    "email" => "john.doe@gmail.com",
  ]
]);

$valid = $inp->eq("user.name")->length(1, 200);

var_dump($valid); // true

💡 You can also use validateInData() for more dynamic validations:

$valid = $inp->validateInData("user.name", "length", [1, 200]);

Using the Chain validations

The ValidationChain class allows you to chain multiple validations on a single value and check the overall result:

use MaplePHP\Validate\ValidationChain;

$validPool = new ValidationChain("john.doe@gmail.com");

$validPool->isEmail()
    ->length(1, 200)
    ->endsWith(".com");

$isValid = $validPool->isValid();
// $hasError = $validPool->hasError();

var_dump($isValid); // true

🧠 ValidationChain is useful when you want to collect and evaluate multiple validation rules at once.

Validations

Required field

Validator::value("Lorem ipsum dolor")->isRequired();

Check if there is any value (even if it's 0)

Validator::value(0)->hasValue();

Check string length (min, max)

  • Min only:
Validator::value("Lorem ipsum dolor")->length(1);
  • Min and Max:
Validator::value("Lorem ipsum dolor")->length(1, 160);

Check if string has an exact length

Validator::value("Lorem ipsum dolor")->isLengthEqualTo(10);

Check if value equals exactly to or not equals another value

  • Equals: Strict data type validation check if equals to expected value
Validator::value("Lorem ipsum dolor")->isEqualTo("Lorem ipsum dolor");
  • Loosely Equals: Flexible data type validation check if loosely equals to expected value
Validator::value("Lorem ipsum dolor")->isLooselyEqualTo("Lorem ipsum dolor");
  • Not equals: Strict data type validation check if not equals to expected value
Validator::value("Lorem ipsum dolor")->isNotEqualTo("Lorem ipsum");
  • Loosely Not equals: Flexible data type validation check if loosely not equals to expected value
Validator::value("Lorem ipsum dolor")->isLooselyNotEqualTo("Lorem ipsum");
  • More than:
Validator::value(200)->isMoreThan(100);
  • Less than:
Validator::value(100)->isLessThan(200);
  • Contains:
Validator::value("Lorem ipsum dolor")->contains("ipsum");
  • Starts with:
Validator::value("Lorem ipsum dolor")->startsWith("Lorem");
  • Ends with:
Validator::value("Lorem ipsum dolor")->endsWith("dolor");

Validate if it's a valid email

Validator::value("john@gmail.com")->isEmail();

Validate if it's a valid phone number

Allows numbers and special characters ("-", "+", " ").

Validator::value("+46709676040")->isPhone();

Validate Swedish personal number (personnel)

Validator::value("198808213412")->isSocialNumber();

Validate Swedish organization number

Validator::value("197511043412")->isOrgNumber();

Validate credit card number

Validator::value("1616523623422334")->isCreditCard();

Validate VAT number

Validator::value("SE8272267913")->isVatNumber();

Check if value is a valid float

Validator::value(3.1415)->isFloat();

Check if value is a valid integer

Validator::value(42)->isInt();

Check if value is a valid number (numeric)

Validator::value(42)->isNumber();

Check if value is positive or negative

  • Positive:
Validator::value(20)->isPositive();
  • Negative:
Validator::value(-20)->isNegative();

Check if value is a valid version number

// True === validate as a semantic Versioning, e.g. 1.0.0
Validator::value("1.0.0")->isValidVersion(true);

Compare version with another version

Validator::value("1.0.0")->versionCompare("2.0.0", '>=');

Validate password (lossy or strict)

  • Lossy password (minimum character set):
Validator::value("password123")->isLossyPassword(8);
  • Strict password (requires at least one lowercase, uppercase, digit, and special character):
Validator::value("Password#123!")->isStrictPassword(8);

Validate if value is string and contains only A-Z

  • Both cases:
Validator::value("HelloWorld")->atoZ();
  • Lowercase only:
Validator::value("helloworld")->lowerAtoZ();
  • Uppercase only:
Validator::value("HELLOWORLD")->upperAtoZ();

Check if it's a valid hex color code

Validator::value("#000000")->hex();

Check if it's a valid date

As default you can validate against a date format like this "Y-m-d"

Validator::value("2022-02-13")->isDate();

Custom date validation

Validator::value("2022/02/13 14:15")->isDate(Y/m/d H:i);

Check if it's a valid date and time

Validator::value("2022-02-13 14:15:58")->isDateWithTime();

Check if it's a valid time

Validate hour and minutes

Validator::value("14:15")->isTime();

Validate hour, minutes and seconds

Validator::value("14:15:58")->isTime(true);

Check if someone is at least a certain age

Validator::value("1988-05-22")->isAge(18);

Check if it's a valid domain name

Validator::value("example.com")->isDomain();

Check if it's a valid URL (http/https is required)

Validator::value("https://example.com/page")->isUrl();

Check if it's a valid DNS entry

Validator::value("example.com")->isDns();

Validate file and directory properties

  • Check if it's a valid file:
Validator::value("/path/to/file.txt")->isFile();
  • Check if it's a directory:
Validator::value("/path/to/directory")->isDir();
  • Check if it's writable:
Validator::value("/path/to/file.txt")->isWritable();
  • Check if it's readable:
Validator::value("/path/to/file.txt")->isReadable();

Validate ZIP code (with custom length)

Validator::value("12345")->isZip(5);

Validate if value matches a pattern (regex)

Validator::value("abc")->pregMatch("a-zA-Z");

Validate Arrays

Check if is an array

Validator::value(["Apple", "Orange", "Lemon"])->isArray();

Check if array is empty

Validator::value(["Apple", "Orange", "Lemon"])->isArrayEmpty();

Strict data type validation check if value exists in given array

Validator::value(["Apple", "Orange", "Lemon"])->isInArray();

Flexible data type validation check if value exists in given array

Validator::value(["Apple", "Orange", "Lemon"])->isLooselyInArray();

Strict data type validation check if key exists in array

Validator::value(["Apple", "Orange", "Lemon"])->keyExists();

Check if all items in array is truthy

Validator::value(["1", true, "Lemon"])->itemsAreTruthy();

Check if truthy item exist in array

Validator::value(["1", false, "Lemon"])->hasTruthyItem();

Check if array count is equal to length

Validator::value(["Apple", "Orange", "Lemon"])->isCountEqualTo(3);

Check if array count is more than the length

Validator::value(["Apple", "Orange", "Lemon"])->isCountMoreThan(1);

Check if array count is less than the length

Validator::value(["Apple", "Orange", "Lemon"])->isCountLessThan(4);

Check if value is a valid float

Validator::value("Lorem ipsum dolor")->isString();

Validate types

Check if value is a valid float

Validator::value("Lorem ipsum dolor")->isString();

Check if value is a valid float

Validator::value(3.1415)->isFloat();

Check if value is a valid integer

Validator::value(42)->isInt();
  • Is Boolean:
Validator::value(true)->isBool();
  • Is Boolean-like value (e.g., "yes", "no", "1", "0"):
Validator::value("yes")->isBoolVal();
  • Array:
Validator::value([1, 2, 3])->isArray();
  • Object:
Validator::value($obj)->isObject();
  • Resource:
Validator::value($resource)->isResource();
  • Json:
Validator::value($jsonStr)->isJson();
  • HTML Document:
Validator::value($jsonStr)->isFullHtml();

HTTP status code validation

Strict data type validation check if value is a valid HTTP status code

Validator::value(403)->isHttpStatusCode();

Strict data type validation check if value is HTTP 200 OK

Validator::value(200)->isHttp200();

Strict data type validation check if value is a 2xx success HTTP code

Validator::value(210)->isHttpSuccess();

Strict data type validation check if value is a 4xx client error HTTP code

Validator::value(403)->isHttpClientError();

Strict data type validation check if value is a 5xx server error HTTP code

Validator::value(500)->isHttpServerError();

Validate using multiple methods (one or all must match)

  • Validate if one method passes:
Validator::value("12345")->oneOf(['isInt' => []]);
  • Validate if all methods pass:
Validator::value("12345")->allOf(['isInt' => [], 'length' => [5]]);

About

Validation library

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.