Метод 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-адреса.