Bird
Raised Fist0
PHPprogramming~5 mins

Common validation patterns in PHP

Choose your learning style10 modes available
Introduction

Validation helps check if data is correct before using it. It stops mistakes and keeps programs safe.

When a user fills a form and you want to check if the email looks right.
When you want to make sure a password is strong enough.
When you need to confirm a number is within a certain range.
When you want to check if a required field is not empty.
When you want to verify a date is in the correct format.
Syntax
PHP
<?php
// Example of validating an email
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // valid email
} else {
    // invalid email
}
?>
Use PHP's built-in filter_var function for common validations like email and URL.
You can use regular expressions with preg_match for custom patterns.
Examples
This checks if the email is in a correct format.
PHP
<?php
// Validate email
$email = 'user@example.com';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo 'Valid email';
} else {
    echo 'Invalid email';
}
This checks if a number is between 18 and 99.
PHP
<?php
// Validate number range
$age = 25;
if ($age >= 18 && $age <= 99) {
    echo 'Age is valid';
} else {
    echo 'Age is invalid';
}
This checks if the name is not empty.
PHP
<?php
// Validate non-empty string
$name = 'John';
if (!empty($name)) {
    echo 'Name is provided';
} else {
    echo 'Name is missing';
}
This checks if the phone number matches the pattern 123-456-7890.
PHP
<?php
// Validate pattern with regex
$phone = '123-456-7890';
if (preg_match('/^\d{3}-\d{3}-\d{4}$/', $phone)) {
    echo 'Phone number is valid';
} else {
    echo 'Phone number is invalid';
}
Sample Program

This program checks if the email is correct, password is at least 8 characters, and age is between 18 and 99.

PHP
<?php
// Sample program to validate user input
$email = 'test@example.com';
$password = 'Pass1234';
$age = 20;

// Validate email
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Email is invalid\n";
} else {
    echo "Email is valid\n";
}

// Validate password length
if (strlen($password) < 8) {
    echo "Password too short\n";
} else {
    echo "Password length is okay\n";
}

// Validate age range
if ($age < 18 || $age > 99) {
    echo "Age is invalid\n";
} else {
    echo "Age is valid\n";
}
OutputSuccess
Important Notes

Always sanitize data before validating to avoid security issues.

Use built-in PHP filters when possible for simplicity and reliability.

Regular expressions are powerful but can be tricky; test them carefully.

Summary

Validation checks if data is correct before using it.

Use filter_var for common checks like email and URL.

Use preg_match for custom pattern checks.

Practice

(1/5)
1.

Which PHP function is commonly used to validate if a string is a valid email address?

easy
A. preg_match with '/^\d+$/'
B. filter_var with FILTER_VALIDATE_EMAIL
C. strlen to check length
D. strtolower to convert to lowercase

Solution

  1. Step 1: Understand email validation in PHP

    PHP provides a built-in filter called FILTER_VALIDATE_EMAIL to check if a string is a valid email.
  2. Step 2: Identify the correct function usage

    filter_var with FILTER_VALIDATE_EMAIL returns the email if valid, or false if invalid.
  3. Final Answer:

    filter_var with FILTER_VALIDATE_EMAIL -> Option B
  4. Quick Check:

    Email validation = filter_var with FILTER_VALIDATE_EMAIL [OK]
Hint: Use filter_var with FILTER_VALIDATE_EMAIL for email checks [OK]
Common Mistakes:
  • Using preg_match with wrong regex for email
  • Checking length instead of format
  • Using string functions unrelated to validation
2.

Which of the following is the correct syntax to validate a URL using filter_var in PHP?

?
easy
A. filter_var($url, FILTER_VALIDATE_INT);
B. filter_var($url, FILTER_VALIDATE_EMAIL);
C. filter_var($url, FILTER_VALIDATE_URL);
D. filter_var($url, FILTER_VALIDATE_BOOLEAN);

Solution

  1. Step 1: Identify the filter for URL validation

    FILTER_VALIDATE_URL is the correct filter to check if a string is a valid URL.
  2. Step 2: Confirm correct function call

    filter_var takes the variable and the filter constant as parameters.
  3. Final Answer:

    filter_var($url, FILTER_VALIDATE_URL); -> Option C
  4. Quick Check:

    URL validation = filter_var with FILTER_VALIDATE_URL [OK]
Hint: Use FILTER_VALIDATE_URL with filter_var for URL validation [OK]
Common Mistakes:
  • Using FILTER_VALIDATE_EMAIL for URLs
  • Using integer or boolean filters incorrectly
  • Missing the filter parameter
3.

What will be the output of the following PHP code?

$phone = '123-456-7890';
if (preg_match('/^\d{3}-\d{3}-\d{4}$/', $phone)) {
    echo 'Valid phone';
} else {
    echo 'Invalid phone';
}
medium
A. Syntax error
B. Invalid phone
C. No output
D. Valid phone

Solution

  1. Step 1: Analyze the regex pattern

    The pattern /^\d{3}-\d{3}-\d{4}$/ matches exactly 3 digits, a dash, 3 digits, a dash, then 4 digits.
  2. Step 2: Check the input string against the pattern

    The string '123-456-7890' matches this pattern exactly.
  3. Final Answer:

    Valid phone -> Option D
  4. Quick Check:

    Regex matches phone format = Valid phone [OK]
Hint: Match exact pattern with preg_match regex anchors ^ and $ [OK]
Common Mistakes:
  • Forgetting anchors ^ and $ in regex
  • Using wrong quantifiers in regex
  • Not escaping special characters
4.

Identify the error in this PHP code snippet for validating an integer:

$num = '123a';
if (filter_var($num, FILTER_VALIDATE_INT)) {
    echo 'Valid integer';
} else {
    echo 'Invalid integer';
}
medium
A. filter_var returns false for '123a', so output is 'Invalid integer'
B. filter_var should use FILTER_VALIDATE_NUMBER instead
C. The variable $num should be cast to int before validation
D. filter_var does not validate integers

Solution

  1. Step 1: Understand filter_var with FILTER_VALIDATE_INT

    This filter returns the integer value if valid, or false if invalid.
  2. Step 2: Check input '123a'

    The string '123a' is not a valid integer, so filter_var returns false.
  3. Final Answer:

    filter_var returns false for '123a', so output is 'Invalid integer' -> Option A
  4. Quick Check:

    Invalid integer string returns false = 'Invalid integer' output [OK]
Hint: filter_var returns false if input is not a pure integer string [OK]
Common Mistakes:
  • Using FILTER_VALIDATE_NUMBER which does not exist
  • Casting before validation causing wrong results
  • Assuming filter_var always returns boolean
5.

You want to validate a username in PHP that must start with a letter, can contain letters, numbers, underscores, and be 5 to 15 characters long. Which preg_match pattern correctly validates this?

hard
A. /^[a-zA-Z][a-zA-Z0-9_]{4,14}$/
B. /^[0-9][a-zA-Z0-9_]{4,14}$/
C. /^[a-zA-Z0-9_]{5,15}$/
D. /^[a-zA-Z]{5,15}$/

Solution

  1. Step 1: Understand username requirements

    Username must start with a letter, then 4 to 14 characters of letters, digits, or underscores, total length 5-15.
  2. Step 2: Analyze each pattern

    /^[a-zA-Z][a-zA-Z0-9_]{4,14}$/ matches a letter at start, then 4-14 allowed chars, total 5-15 length. Others fail start or length rules.
  3. Final Answer:

    /^[a-zA-Z][a-zA-Z0-9_]{4,14}$/ -> Option A
  4. Quick Check:

    Start letter + allowed chars + length 5-15 = /^[a-zA-Z][a-zA-Z0-9_]{4,14}$/ [OK]
Hint: Start with letter, then allowed chars with correct length in regex [OK]
Common Mistakes:
  • Allowing digits as first character
  • Not enforcing length limits
  • Missing anchors ^ and $
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard