Intereting Posts

Корреляция URL-адресов PHP, сохраняющая недопустимые URL-адреса

Мне нужно заменить url недопустимые символы с чем-то url valid, а затем преобразовать обратно.

Это для страницы поиска с URL-адресом, например http://my.site/search/this-is-a-search , формой поиска POSTS, после чего пользователь перенаправляется на новый URL-адрес.

Php имеет функции urlencode и urldecode, однако они вообще не работают и оставляют недопустимые символы в моем URL-адресе.

Конечно, мне здесь не нужно изобретать колесо.

Для таких вещей, как http://my.site/search/this-is-a-search (т. rawurlencode rawurldecode строки запроса), вы должны использовать rawurlencode и rawurldecode . Они гарантированно защищены от URL-адресов.

Тем не менее, urlencode никогда не будет генерировать небезопасный URL-путь, так как единственное различие заключается в том, как кодируются пробелы, а urlencode кодирует пробелы в + , что разрешено в пути URL.

Из RFC 1738:

 httpurl = "http: //" hostport ["/" hpath ["?"  поиск]]
 hpath = hsegment * ["/" hsegment]
 hsegment = * [uchar |  ";"  |  ":" |  "@" |  "&" |  знак равно
 uchar = unreserved |  побег
 unreserved = alpha |  цифры |  безопасный |  дополнительный
 safe = "$" |  "-" |  "_" |  ""  |  "+"

Как насчет rawurlencode() .

http://www.php.net/manual/en/function.rawurlencode.php

 echo rawurlencode('http://my.site/search/this-is-a-search'); // http%3A%2F%2Fmy.site%2Fsearch%2Fthis-is-a-search