{"id":22477552,"url":"https://github.com/maplephp/validate","last_synced_at":"2026-02-21T13:03:10.479Z","repository":{"id":209873554,"uuid":"610835742","full_name":"MaplePHP/Validate","owner":"MaplePHP","description":"Validation library","archived":false,"fork":false,"pushed_at":"2024-10-02T15:38:26.000Z","size":53,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-13T02:49:31.940Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaplePHP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-07T15:22:41.000Z","updated_at":"2024-10-02T15:38:26.000Z","dependencies_parsed_at":"2023-11-29T16:19:53.582Z","dependency_job_id":"61c0c066-5d62-446e-95ef-0700bd8ed933","html_url":"https://github.com/MaplePHP/Validate","commit_stats":null,"previous_names":["maplephp/validate"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaplePHP%2FValidate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaplePHP%2FValidate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaplePHP%2FValidate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaplePHP%2FValidate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaplePHP","download_url":"https://codeload.github.com/MaplePHP/Validate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228476038,"owners_count":17926134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-06T14:11:31.117Z","updated_at":"2026-02-21T13:03:10.471Z","avatar_url":"https://github.com/MaplePHP.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MaplePHP - Validation\n\nMaplePHP - 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.\n\n---\n\n## Installation\n\nInstall the library via Composer:\n\n```bash\ncomposer require maplephp/validate\n```\n\n---\n\n## Getting Started\n\nYou can validate values by instantiating the `Validator` class. There are two ways to do this:\n\n```php\nuse MaplePHP\\Validate\\Validator;\n\n// Option 1: Create an instance\n$inp = new Validator(\"Lorem ipsum dolor\");\nvar_dump($inp-\u003elength(1, 200)); // true\n\n// Option 2: Use the static method for cleaner syntax\n$valid = Validator::value(\"Lorem ipsum dolor\")-\u003elength(1, 200);\nvar_dump($valid); // true\n```\n\n---\n\n## Validating Nested Data\n\nYou can traverse nested arrays or objects and validate specific values using dot notation:\n\n```php\n$inp = new Validator([\n  \"user\" =\u003e [\n    \"name\" =\u003e \"John Doe\",\n    \"email\" =\u003e \"john.doe@gmail.com\",\n  ]\n]);\n\n$valid = $inp-\u003eeq(\"user.name\")-\u003elength(1, 200);\n\nvar_dump($valid); // true\n```\n\n\u003e 💡 You can also use `validateInData()` for more dynamic validations:\n```php\n$valid = $inp-\u003evalidateInData(\"user.name\", \"length\", [1, 200]);\n```\n\n---\n\n## Using the Chain validations\n\nThe `ValidationChain` class allows you to chain multiple validations on a single value and check the overall result:\n\n```php\nuse MaplePHP\\Validate\\ValidationChain;\n\n$validPool = new ValidationChain(\"john.doe@gmail.com\");\n\n$validPool-\u003eisEmail()\n    -\u003elength(1, 200)\n    -\u003eendsWith(\".com\");\n\n$isValid = $validPool-\u003eisValid();\n// $hasError = $validPool-\u003ehasError();\n\nvar_dump($isValid); // true\n```\n\n\u003e 🧠 `ValidationChain` is useful when you want to collect and evaluate multiple validation rules at once.\n\n\n## Validations\n\n### Required field\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisRequired();\n```\n\n### Check if there is any value (even if it's 0)\n```php\nValidator::value(0)-\u003ehasValue();\n```\n\n### Check string length (min, max)\n- **Min only**:\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003elength(1);\n```\n- **Min and Max**:\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003elength(1, 160);\n```\n\n### Check if string has an exact length\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisLengthEqualTo(10);\n```\n\n### Check if value equals exactly to or not equals another value\n- **Equals**: Strict data type validation check if equals to expected value\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisEqualTo(\"Lorem ipsum dolor\");\n```\n\n- **Loosely Equals**: Flexible data type validation check if loosely equals to expected value\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisLooselyEqualTo(\"Lorem ipsum dolor\");\n```\n\n- **Not equals**: Strict data type validation check if not equals to expected value\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisNotEqualTo(\"Lorem ipsum\");\n```\n\n- **Loosely Not equals**: Flexible data type validation check if loosely not equals to expected value\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisLooselyNotEqualTo(\"Lorem ipsum\");\n```\n\n- **More than**:\n```php\nValidator::value(200)-\u003eisMoreThan(100);\n```\n\n- **Less than**:\n```php\nValidator::value(100)-\u003eisLessThan(200);\n```\n\n- **Contains**:\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003econtains(\"ipsum\");\n```\n\n- **Starts with**:\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003estartsWith(\"Lorem\");\n```\n\n- **Ends with**:\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eendsWith(\"dolor\");\n```\n\n### Validate if it's a valid email\n```php\nValidator::value(\"john@gmail.com\")-\u003eisEmail();\n```\n\n### Validate if it's a valid phone number\nAllows numbers and special characters (\"-\", \"+\", \" \").\n```php\nValidator::value(\"+46709676040\")-\u003eisPhone();\n```\n\n### Validate Swedish personal number (personnel)\n```php\nValidator::value(\"198808213412\")-\u003eisSocialNumber();\n```\n\n### Validate Swedish organization number\n```php\nValidator::value(\"197511043412\")-\u003eisOrgNumber();\n```\n\n### Validate credit card number\n```php\nValidator::value(\"1616523623422334\")-\u003eisCreditCard();\n```\n\n### Validate VAT number\n```php\nValidator::value(\"SE8272267913\")-\u003eisVatNumber();\n```\n\n### Check if value is a valid float\n```php\nValidator::value(3.1415)-\u003eisFloat();\n```\n\n### Check if value is a valid integer\n```php\nValidator::value(42)-\u003eisInt();\n```\n\n### Check if value is a valid number (numeric)\n```php\nValidator::value(42)-\u003eisNumber();\n```\n\n### Check if value is positive or negative\n- **Positive**:\n```php\nValidator::value(20)-\u003eisPositive();\n```\n- **Negative**:\n```php\nValidator::value(-20)-\u003eisNegative();\n```\n\n### Check if value is a valid version number\n```php\n// True === validate as a semantic Versioning, e.g. 1.0.0\nValidator::value(\"1.0.0\")-\u003eisValidVersion(true);\n```\n\n### Compare version with another version\n```php\nValidator::value(\"1.0.0\")-\u003eversionCompare(\"2.0.0\", '\u003e=');\n```\n\n### Validate password (lossy or strict)\n- **Lossy password (minimum character set)**:\n```php\nValidator::value(\"password123\")-\u003eisLossyPassword(8);\n```\n- **Strict password** (requires at least one lowercase, uppercase, digit, and special character):\n```php\nValidator::value(\"Password#123!\")-\u003eisStrictPassword(8);\n```\n\n### Validate if value is string and contains only A-Z\n- **Both cases**:\n```php\nValidator::value(\"HelloWorld\")-\u003eatoZ();\n```\n- **Lowercase only**:\n```php\nValidator::value(\"helloworld\")-\u003elowerAtoZ();\n```\n- **Uppercase only**:\n```php\nValidator::value(\"HELLOWORLD\")-\u003eupperAtoZ();\n```\n\n### Check if it's a valid hex color code\n```php\nValidator::value(\"#000000\")-\u003ehex();\n```\n\n### Check if it's a valid date\nAs default you can validate against a date format like this \"Y-m-d\"\n```php\nValidator::value(\"2022-02-13\")-\u003eisDate();\n```\nCustom date validation  \n```php\nValidator::value(\"2022/02/13 14:15\")-\u003eisDate(Y/m/d H:i);\n```\n\n### Check if it's a valid date and time\n```php\nValidator::value(\"2022-02-13 14:15:58\")-\u003eisDateWithTime();\n```\n\n### Check if it's a valid time\nValidate hour and minutes\n```php\nValidator::value(\"14:15\")-\u003eisTime();\n```\nValidate hour, minutes and seconds\n```php\nValidator::value(\"14:15:58\")-\u003eisTime(true);\n```\n\n### Check if someone is at least a certain age\n```php\nValidator::value(\"1988-05-22\")-\u003eisAge(18);\n```\n\n### Check if it's a valid domain name\n```php\nValidator::value(\"example.com\")-\u003eisDomain();\n```\n\n### Check if it's a valid URL (http/https is required)\n```php\nValidator::value(\"https://example.com/page\")-\u003eisUrl();\n```\n\n### Check if it's a valid DNS entry\n```php\nValidator::value(\"example.com\")-\u003eisDns();\n```\n\n### Validate file and directory properties\n- **Check if it's a valid file**:\n```php\nValidator::value(\"/path/to/file.txt\")-\u003eisFile();\n```\n- **Check if it's a directory**:\n```php\nValidator::value(\"/path/to/directory\")-\u003eisDir();\n```\n- **Check if it's writable**:\n```php\nValidator::value(\"/path/to/file.txt\")-\u003eisWritable();\n```\n- **Check if it's readable**:\n```php\nValidator::value(\"/path/to/file.txt\")-\u003eisReadable();\n```\n\n### Validate ZIP code (with custom length)\n```php\nValidator::value(\"12345\")-\u003eisZip(5);\n```\n\n### Validate if value matches a pattern (regex)\n```php\nValidator::value(\"abc\")-\u003epregMatch(\"a-zA-Z\");\n```\n\n## Validate Arrays\n\n### Check if is an array\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003eisArray();\n```\n\n### Check if array is empty\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003eisArrayEmpty();\n```\n\n### Strict data type validation check if value exists in given array\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003eisInArray();\n```\n\n### Flexible data type validation check if value exists in given array\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003eisLooselyInArray();\n```\n\n### Strict data type validation check if key exists in array\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003ekeyExists();\n```\n\n### Check if all items in array is truthy\n```php\nValidator::value([\"1\", true, \"Lemon\"])-\u003eitemsAreTruthy();\n```\n\n### Check if truthy item exist in array\n```php\nValidator::value([\"1\", false, \"Lemon\"])-\u003ehasTruthyItem();\n```\n\n### Check if array count is equal to length\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003eisCountEqualTo(3);\n```\n\n### Check if array count is more than the length\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003eisCountMoreThan(1);\n```\n\n### Check if array count is less than the length\n```php\nValidator::value([\"Apple\", \"Orange\", \"Lemon\"])-\u003eisCountLessThan(4);\n```\n\n### Check if value is a valid float\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisString();\n```\n\n## Validate types\n\n### Check if value is a valid float\n```php\nValidator::value(\"Lorem ipsum dolor\")-\u003eisString();\n```\n### Check if value is a valid float\n```php\nValidator::value(3.1415)-\u003eisFloat();\n```\n### Check if value is a valid integer\n```php\nValidator::value(42)-\u003eisInt();\n```\n- **Is Boolean**:\n```php\nValidator::value(true)-\u003eisBool();\n```\n- **Is Boolean-like value** (e.g., \"yes\", \"no\", \"1\", \"0\"):\n```php\nValidator::value(\"yes\")-\u003eisBoolVal();\n```\n- **Array**:\n```php\nValidator::value([1, 2, 3])-\u003eisArray();\n```\n- **Object**:\n```php\nValidator::value($obj)-\u003eisObject();\n```\n- **Resource**:\n```php\nValidator::value($resource)-\u003eisResource();\n```\n\n- **Json**:\n```php\nValidator::value($jsonStr)-\u003eisJson();\n```\n\n- **HTML Document**:\n```php\nValidator::value($jsonStr)-\u003eisFullHtml();\n```\n\n\n## HTTP status code validation\n\n#### Strict data type validation check if value is a valid HTTP status code\n```php\nValidator::value(403)-\u003eisHttpStatusCode();\n```\n\n#### Strict data type validation check if value is HTTP 200 OK\n```php\nValidator::value(200)-\u003eisHttp200();\n```\n\n#### Strict data type validation check if value is a 2xx success HTTP code\n```php\nValidator::value(210)-\u003eisHttpSuccess();\n```\n\n#### Strict data type validation check if value is a 4xx client error HTTP code\n```php\nValidator::value(403)-\u003eisHttpClientError();\n```\n\n#### Strict data type validation check if value is a 5xx server error HTTP code\n```php\nValidator::value(500)-\u003eisHttpServerError();\n```\n\n\n### Validate using multiple methods (one or all must match)\n- **Validate if one method passes**:\n```php\nValidator::value(\"12345\")-\u003eoneOf(['isInt' =\u003e []]);\n```\n- **Validate if all methods pass**:\n```php\nValidator::value(\"12345\")-\u003eallOf(['isInt' =\u003e [], 'length' =\u003e [5]]);\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaplephp%2Fvalidate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaplephp%2Fvalidate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaplephp%2Fvalidate/lists"}