Очистка URL-адресов: удаление недопустимых символов в PHP

Метод 1: регулярные выражения

Регулярные выражения предоставляют мощный инструмент для сопоставления с образцом и манипуляций с ним. Мы можем использовать регулярное выражение для удаления любых символов, которые не разрешены в URL-адресе. Давайте рассмотрим пример:

function cleanUrlRegex($url)
{
    $pattern = '/[^a-zA-Z0-9\-._~:\/?#\[\]@!$&\'()*+,;=%]/';
    return preg_replace($pattern, '', $url);
}
$url = 'http://www.example.com/some/path/with/invalid@characters?query=hello#fragment';
$cleanUrl = cleanUrlRegex($url);
echo $cleanUrl;

Выход:

http://www.example.com/some/path/with/invalidcharacters?query=hello#fragment

Этот метод использует функцию preg_replace()для замены любых символов, которые не разрешены в URL-адресе, пустой строкой. Шаблон регулярного выражения /[^a-zA-Z0-9\-._~:\/?#\[\]@!$&'()*+,;=%]/соответствует любому символу, кроме буквенно-цифрового, а также нескольким разрешенным символам URL.

Метод 2. Фильтрация входных данных

Другой способ удалить недопустимые символы из URL-адреса — использовать функцию filter_var()с фильтром FILTER_SANITIZE_URL. Этот фильтр удаляет все недопустимые символы из строки URL. Вот пример:

function cleanUrlFilter($url)
{
    return filter_var($url, FILTER_SANITIZE_URL);
}
$url = 'http://www.example.com/some/path/with/invalid@characters?query=hello#fragment';
$cleanUrl = cleanUrlFilter($url);
echo $cleanUrl;

Выход:

http://www.example.com/some/path/with/invalidcharacters?query=hello#fragment

Фильтр FILTER_SANITIZE_URLудаляет любой недопустимый символ в URL-адресе. Это удобный способ очистить строку URL.

Метод 3: кодирование URL

Кодирование URL-адресов – это еще один метод обработки недопустимых символов в URL-адресах. Вместо удаления символов мы можем закодировать их с помощью функции urlencode(). Этот метод сохраняет символ, но гарантирует, что он не вызовет проблем в URL-адресе. Вот пример:

function cleanUrlEncode($url)
{
    return urlencode($url);
}
$url = 'http://www.example.com/some/path/with/invalid@characters?query=hello#fragment';
$cleanUrl = cleanUrlEncode($url);
echo $cleanUrl;

Выход:

http%3A%2F%2Fwww.example.com%2Fsome%2Fpath%2Fwith%2Finvalid%40characters%3Fquery%3Dhello%23fragment

Кодирование URL-адреса заменяет все небуквенно-цифровые символы соответствующими значениями в процентном кодировании. Это гарантирует, что URL-адрес действителен и его можно безопасно передать.

и кодировка URL с помощью urlencode(). Выберите метод, который лучше всего соответствует вашим требованиям, и внедрите его в свои веб-приложения, чтобы обеспечить чистые и действительные URL-адреса.