What are common pitfalls when using preg_match in PHP, and how can they be avoided?

Common pitfalls when using preg_match in PHP include not properly escaping special characters in the regex pattern, not handling errors or exceptions, and not using capturing groups correctly. To avoid these pitfalls, always escape special characters using preg_quote(), handle errors or exceptions using try-catch blocks, and use capturing groups to extract specific parts of the matched string.

// Example code snippet demonstrating how to avoid common pitfalls when using preg_match

// Escaping special characters in the regex pattern
$pattern = '/^http:\/\/www\.example\.com$/';
$url = 'http://www.example.com';
if (preg_match(preg_quote($pattern), $url)) {
    echo 'URL matched!';
}

// Handling errors or exceptions
$pattern = '/[a-z]+/';
$string = 'Hello World';
try {
    if (preg_match($pattern, $string)) {
        echo 'Match found!';
    }
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

// Using capturing groups
$pattern = '/(\d{2})-(\d{2})-(\d{4})/';
$date = '12-31-2021';
if (preg_match($pattern, $date, $matches)) {
    echo 'Date matched: ' . $matches[0];
    echo 'Month: ' . $matches[1];
    echo 'Day: ' . $matches[2];
    echo 'Year: ' . $matches[3];
}