What are the best practices for validating and sanitizing user input in PHP, especially when dealing with complex patterns like Roman numerals?

When validating and sanitizing user input in PHP, especially when dealing with complex patterns like Roman numerals, it is important to use regular expressions to ensure the input matches the expected format. Additionally, it is crucial to sanitize the input to prevent any potential security vulnerabilities, such as SQL injection attacks.

// Validate and sanitize Roman numeral input
$romanNumeral = $_POST['roman_numeral'];

// Validate Roman numeral input using regular expression
if (preg_match('/^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/', $romanNumeral)) {
    // Sanitize the input to prevent SQL injection
    $sanitizedRomanNumeral = filter_var($romanNumeral, FILTER_SANITIZE_STRING);
    // Process the validated and sanitized input
} else {
    // Handle invalid input
}