What are the best practices for validating and sanitizing user input in PHP, even if the input is limited to selecting predefined options?

When validating and sanitizing user input in PHP, even if the input is limited to selecting predefined options, it is important to always validate the input against the predefined options to prevent any malicious or unexpected input. One way to do this is by using a whitelist approach, where only the predefined options are allowed and all other input is rejected. Additionally, sanitizing the input by removing any unwanted characters or tags can help prevent any potential security vulnerabilities.

// Assuming predefined options are stored in an array
$predefinedOptions = ['option1', 'option2', 'option3'];

// Validate user input against predefined options
$userInput = $_POST['user_input'];
if (in_array($userInput, $predefinedOptions)) {
    // Input is valid, proceed with further processing
    // Sanitize input if necessary
    $sanitizedInput = filter_var($userInput, FILTER_SANITIZE_STRING);
    // Use $sanitizedInput in your application
} else {
    // Input is not valid, handle error accordingly
    echo 'Invalid input';
}