У меня есть 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()
, но пока безуспешно.