Bird
Raised Fist0
PHPprogramming~20 mins

Why regex is needed in PHP - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Regex Master in PHP
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Why use regex in PHP for text searching?

Imagine you want to find all email addresses in a long text. Why is regex useful in PHP for this task?

ARegex converts text into numbers for calculations.
BRegex lets you search complex patterns like emails easily in text.
CRegex automatically fixes spelling mistakes in the text.
DRegex is used to create images from text.
Attempts:
2 left
💡 Hint

Think about how you find a pattern, not just a word.

❓ Predict Output
intermediate
2:00remaining
What is the output of this PHP regex code?

Look at this PHP code that uses regex to check if a string contains digits:

$text = 'Hello123';
if (preg_match('/\d+/', $text)) {
    echo 'Digits found';
} else {
    echo 'No digits';
}

What will it print?

ADigits found
BEmpty output
CSyntax error
DNo digits
Attempts:
2 left
💡 Hint

\d+ means one or more digits.

❓ Predict Output
advanced
2:00remaining
What does this PHP regex code output?

Consider this PHP code that extracts all words starting with 'a' or 'A':

$text = 'Apple and apricot are awesome';
preg_match_all('/\b[aA]\w*/', $text, $matches);
print_r($matches[0]);

What is the output?

AArray ( [0] => Apple )
BArray ( [0] => Apple [1] => apricot [2] => are [3] => awesome )
CArray ( [0] => Apple [1] => and [2] => apricot [3] => are [4] => awesome )
DArray ( )
Attempts:
2 left
💡 Hint

\b means word boundary, [aA] matches 'a' or 'A', \w* matches letters after.

🧠 Conceptual
advanced
2:00remaining
Why is regex preferred over string functions for pattern matching in PHP?

Why would a PHP developer choose regex instead of simple string functions like strpos or strstr for pattern matching?

ARegex can match complex patterns and conditions, not just fixed strings.
BRegex runs faster than any string function always.
CRegex automatically translates text to other languages.
DRegex is easier to read and write than string functions.
Attempts:
2 left
💡 Hint

Think about matching patterns like phone numbers or emails.

❓ Predict Output
expert
2:00remaining
What error does this PHP regex code raise?

Look at this PHP code snippet:

$pattern = '/(abc/';
$text = 'abcdef';
preg_match($pattern, $text, $matches);
print_r($matches);

What error will this code produce?

AParse error: syntax error, unexpected '/'
BFatal error: Undefined variable $matches
CNo output, empty array printed
DWarning: preg_match(): Compilation failed: missing ) at offset 4
Attempts:
2 left
💡 Hint

Check if the regex pattern is correctly closed.

Practice

(1/5)
1. Why do we need regex (regular expressions) in PHP?
easy
A. To handle file uploads
B. To create graphical user interfaces
C. To find and work with specific text patterns easily
D. To connect to databases

Solution

  1. Step 1: Understand regex purpose

    Regex is designed to find patterns in text, like searching or validating strings.
  2. Step 2: Match purpose with PHP tasks

    PHP uses regex to quickly check or change text based on patterns, not for GUIs or databases.
  3. Final Answer:

    To find and work with specific text patterns easily -> Option C
  4. Quick Check:

    Regex = text pattern matching [OK]
Hint: Regex is for text pattern tasks, not UI or databases [OK]
Common Mistakes:
  • Confusing regex with database functions
  • Thinking regex creates user interfaces
  • Assuming regex handles file uploads
2. Which PHP function uses regex to check if a pattern exists in a string?
easy
A. preg_match()
B. str_replace()
C. array_search()
D. file_get_contents()

Solution

  1. Step 1: Identify regex functions in PHP

    preg_match() is the PHP function that checks if a regex pattern matches a string.
  2. Step 2: Compare with other functions

    str_replace() replaces text, array_search() searches arrays, file_get_contents() reads files, none use regex for matching.
  3. Final Answer:

    preg_match() -> Option A
  4. Quick Check:

    Regex match function = preg_match() [OK]
Hint: preg_ prefix means regex functions in PHP [OK]
Common Mistakes:
  • Choosing str_replace() which is not regex-based
  • Confusing array_search() with regex matching
  • Picking file_get_contents() which reads files
3. What will be the output of this PHP code?
$text = 'apple123';
if (preg_match('/\d+/', $text)) {
echo 'Number found';
} else {
echo 'No number';
}
medium
A. Number found
B. No number
C. Syntax error
D. Empty output

Solution

  1. Step 1: Understand the regex pattern

    The pattern '/\d+/' looks for one or more digits anywhere in the string.
  2. Step 2: Check the string content

    The string 'apple123' contains digits '123', so preg_match returns true and 'Number found' is printed.
  3. Final Answer:

    Number found -> Option A
  4. Quick Check:

    Digits in string = 'Number found' [OK]
Hint: \d+ means digits; 'apple123' has digits [OK]
Common Mistakes:
  • Thinking preg_match returns false if digits exist
  • Confusing regex pattern syntax
  • Assuming code has syntax errors
4. Find the error in this PHP regex code:
$email = 'user@example.com';
if (preg_match('^[\w.-]+@[\w.-]+\.[a-z]{2,4}$', $email)) {
echo 'Valid email';
} else {
echo 'Invalid email';
}
medium
A. preg_match() cannot validate emails
B. Pattern does not check for '@' symbol
C. Backslashes need double escaping in PHP strings
D. Regex delimiters missing

Solution

  1. Step 1: Check regex delimiters

    PHP preg functions require the pattern to start and end with delimiters like '/'.
  2. Step 2: Identify missing delimiters

    The pattern ^[\w.-]+@[\w.-]+\.[a-z]{2,4}$ lacks opening '/' and closing '/' delimiters, causing a 'No ending delimiter' error.
  3. Final Answer:

    Regex delimiters missing -> Option D
  4. Quick Check:

    preg_match needs /pattern/ delimiters [OK]
Hint: PHP regex patterns need delimiters like /pattern/ [OK]
Common Mistakes:
  • Forgetting regex delimiters
  • Thinking '@' is not checked
  • Believing preg_match can't validate emails
5. You want to extract all words starting with 'a' from a text using PHP regex. Which pattern should you use?
hard
A. '/a\b\w*/'
B. '/\ba\w*/i'
C. '/\w*a\w*/'
D. '/\b\w*a\b/'

Solution

  1. Step 1: Understand word boundary and pattern

    \b means word boundary, 'a' is the first letter, \w* matches the rest of the word, 'i' makes it case-insensitive.
  2. Step 2: Analyze options

    '/\ba\w*/i' correctly matches words starting with 'a'. Others either place 'a' incorrectly or match words containing 'a' anywhere.
  3. Final Answer:

    '/\ba\w*/i' -> Option B
  4. Quick Check:

    Words starting with 'a' = /\ba\w*/i [OK]
Hint: Use \b for word start, 'a' next, then \w* for rest [OK]
Common Mistakes:
  • Placing 'a' after word boundary incorrectly
  • Matching words containing 'a' anywhere
  • Forgetting case-insensitive flag
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