У меня есть такой URL (обратите внимание на символы «„):
http://tinklarastis.omnitel.lt/kokius-aptarnavimo-kanalus-klientui-siulo-„omnitel «-1494
Я получаю это от синтаксического анализатора SimplePie, если это имеет значение. Теперь, если вы попытаетесь перейти по этому конкретному URL-адресу в своем браузере и скопировать его из адресной строки, вы получите URL-адрес, содержащий не-ASCII-символы в процентах закодированные:
http://tinklarastis .omnitel.lt/kokius-aptarnavimo-kanalus-klientui-siulo-%E2%80%9Eomnitel%E2%80%9C-1494
Я пытаюсь понять, как мне имитировать такое же преобразование в PHP. Я не могу просто использоватьurlencode()
илиurlrawencode()
, поскольку они кодируют как не-ASCII-символы , так и зарезервированные символы, в то время как в моем случае зарезервированные символы (/ ?& и т. д.) должны оставаться такими, какие они есть.
До сих пор я видел только решений, которые включают разбиение URL на части между зарезервированными символами и последующее использование urlencode()
, но мне это кажется хакерским, и я надеюсь, что есть более элегантное решение. Я пробовал различные варианты iconv()
, mb_convert_encoding()
, но пока безуспешно.