What are some best practices for handling and manipulating content extracted using preg_match_all in PHP?

When using preg_match_all in PHP to extract content from a string, it's important to handle and manipulate the extracted data properly. Best practices include sanitizing the extracted content to prevent security vulnerabilities, validating the data to ensure it meets expected criteria, and using appropriate data structures for storing and manipulating the extracted content.

// Example of handling and manipulating content extracted using preg_match_all in PHP

// Sample input string
$input = "Hello, my email is john@example.com and my phone number is 123-456-7890.";

// Regular expression to extract email and phone number
$pattern = '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/';
preg_match_all($pattern, $input, $emails);

$pattern = '/[0-9]{3}-[0-9]{3}-[0-9]{4}/';
preg_match_all($pattern, $input, $phoneNumbers);

// Sanitize and validate extracted email addresses
foreach($emails[0] as $email) {
    $sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
    if(filter_var($sanitizedEmail, FILTER_VALIDATE_EMAIL)) {
        echo "Valid email: $sanitizedEmail\n";
    }
}

// Sanitize and validate extracted phone numbers
foreach($phoneNumbers[0] as $phoneNumber) {
    $sanitizedPhoneNumber = preg_replace('/[^0-9]/', '', $phoneNumber);
    if(strlen($sanitizedPhoneNumber) === 10) {
        echo "Valid phone number: $sanitizedPhoneNumber\n";
    }
}