📖 Scenario: You are building a simple PHP script to check if a user's input contains a specific word. This is useful for filtering or validating text inputs in web forms.
🎯 Goal: Build a PHP script that uses preg_match to find if the word "hello" appears in a given string.
📋 What You'll Learn
Create a variable called text with the exact string "Say hello to the world".
Create a variable called pattern with the exact regex pattern "/hello/".
Use preg_match with $pattern and $text to check for a match and store the result in $matchFound.
Print "Match found!" if $matchFound is true, otherwise print "No match found.".
💡 Why This Matters
🌍 Real World
Pattern matching is used in web forms to validate user input, like checking if an email or phone number is correct.
💼 Career
Knowing how to use <code>preg_match</code> helps in backend web development and data validation tasks.
Progress0 / 4 steps
1
Create the text variable
Create a variable called $text and set it to the string "Say hello to the world".
PHP
Hint
Use $text = "Say hello to the world"; to create the variable.
2
Create the regex pattern variable
Create a variable called $pattern and set it to the regex pattern "/hello/".
PHP
Hint
Use $pattern = "/hello/"; to create the regex pattern variable.
3
Use preg_match to check for the pattern
Use preg_match with $pattern and $text to check for a match and store the result in a variable called $matchFound.
PHP
Hint
Use $matchFound = preg_match($pattern, $text); to check for the pattern.
4
Print the result
Write an if statement that prints "Match found!" if $matchFound is true, otherwise print "No match found.".
PHP
Hint
Use if ($matchFound) { print("Match found!"); } else { print("No match found."); } to print the result.
Practice
(1/5)
1. What does the PHP function preg_match return when the pattern is found in the string?
easy
A. 1
B. 0
C. true
D. false
Solution
Step 1: Understand preg_match return values
The function preg_match returns 1 if the pattern matches the string.
Step 2: Differentiate from no match
If the pattern is not found, it returns 0, not true or false.
Final Answer:
1 -> Option A
Quick Check:
preg_match returns 1 if pattern found [OK]
Hint: Remember: preg_match returns 1 for match, 0 for no match [OK]
Common Mistakes:
Confusing return values with boolean true/false
Assuming preg_match returns the matched string
Thinking preg_match returns number of matches
2. Which of the following is the correct syntax to check if the string $text contains the word "hello" using preg_match?
easy
A. preg_match('hello', $text);
B. preg_match('/hello/', $text);
C. preg_match(/hello/, $text);
D. preg_match("/hello", $text);
Solution
Step 1: Identify correct pattern delimiters
Patterns in preg_match must be enclosed in quotes and slashes, like '/pattern/'.
Hint: Use quotes and slashes around pattern in preg_match [OK]
Common Mistakes:
Omitting quotes around the pattern
Omitting slashes around the pattern
Using wrong quote types inconsistently
3. What will be the output of the following PHP code?
$text = "apple123"; if (preg_match('/\d+/', $text)) { echo "Digits found"; } else { echo "No digits"; }
medium
A. Syntax error
B. No digits
C. Digits found
D. Empty output
Solution
Step 1: Understand the pattern '/\d+/'
The pattern \d+ matches one or more digits in the string.
Step 2: Check if $text contains digits
The string "apple123" contains digits "123", so preg_match returns 1 and the if condition is true.
Final Answer:
Digits found -> Option C
Quick Check:
Pattern \d+ matches digits, output is 'Digits found' [OK]
Hint: \d+ matches digits; check string for numbers [OK]
Common Mistakes:
Not escaping backslash properly in pattern
Assuming preg_match returns matched string
Confusing preg_match return with boolean true/false
4. The following code is intended to check if a string contains only letters. What is wrong with it?
$str = "Hello123"; if (preg_match('/^[a-zA-Z]+$/', $str)) { echo "Only letters"; } else { echo "Contains other characters"; }
medium
A. The pattern is correct but the string contains digits
B. Missing delimiters around the pattern
C. The pattern should use \w instead of [a-zA-Z]
D. preg_match should be preg_match_all
Solution
Step 1: Analyze the pattern and string
The pattern '/^[a-zA-Z]+$/' matches strings with only letters from start to end. The string "Hello123" contains digits, so it does not match.
Step 2: Identify the actual problem
The pattern is correct, but the string has digits, so the else branch runs.
Final Answer:
The pattern is correct but the string contains digits -> Option A
Quick Check:
Pattern matches only letters; digits cause no match [OK]
Hint: Check if string matches pattern exactly, not just pattern syntax [OK]
Common Mistakes:
Thinking pattern is wrong when string is the issue
Confusing preg_match with preg_match_all
Removing anchors ^ and $ incorrectly
5. You want to check if a string contains a valid email address using preg_match. Which pattern correctly matches a simple email format like 'user@example.com'?
hard
A. '/^[a-z]+@[a-z]+\.[a-z]{2,3}$/'
B. '/^[\d]+@[\d]+\.[\d]{2,4}$/'
C. '/\w+@\w+\.com/'
D. '/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/'
Solution
Step 1: Understand email pattern requirements
A simple email has letters, digits, dots, or dashes before and after '@', then a dot and 2-6 letter domain.
Step 2: Evaluate each pattern
'/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/' matches letters, digits, dots, dashes before and after '@', and domain with 2-6 letters. '/^[a-z]+@[a-z]+\.[a-z]{2,3}$/' is too restrictive (only lowercase letters, domain 2-3 letters). '/\w+@\w+\.com/' matches only '.com' domains and misses anchors. '/^[\d]+@[\d]+\.[\d]{2,4}$/' matches digits only, which is invalid for emails.
Final Answer:
'/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/' -> Option D
Quick Check:
'/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/' matches common email format correctly [OK]
Hint: Use \w, dots, dashes, and domain length for email pattern [OK]
Common Mistakes:
Not using anchors ^ and $ to match whole string
Restricting domain or username too much
Ignoring dots and dashes in username or domain
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.