What are the best practices for handling and processing user-generated content, such as links, in a PHP-based chat application?

When handling user-generated content, such as links, in a PHP-based chat application, it is important to sanitize and validate the input to prevent security vulnerabilities like cross-site scripting (XSS) attacks. One way to do this is by using the filter_var() function with the FILTER_SANITIZE_URL filter to sanitize the URL input. Additionally, you can use regular expressions to validate the URL format before displaying it in the chat.

// Sanitize and validate user-generated URL
$userInput = $_POST['user_input']; // Assuming user input is received via POST method
$filteredUrl = filter_var($userInput, FILTER_SANITIZE_URL);

// Validate URL format using regular expression
if (preg_match('/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/', $filteredUrl)) {
    // Display the sanitized and validated URL in the chat
    echo '<a href="' . $filteredUrl . '" target="_blank">' . $filteredUrl . '</a>';
} else {
    // Handle invalid URL input
    echo 'Invalid URL format';
}