htmlentities (implode ("&", $ newParams));
htmlentities
кодирует все байты, не входящие в ASCII, в вашей строке, обычно без необходимости, и, если вы не укажете аргумент charset
, предположите, что ваши строки соответствуют ISO-8859-1, что для греческого языка они определенно выиграли не быть (Надеюсь, вы используете UTF-8 для всего на вашем сайте.)
Вместо этого используйте htmlspecialchars
, который оставит не-ASCII-символы в покое и закодирует только то, что действительно должно быть закодировано.
Однако, чтобы это вообще было проблемой, вы должны использовать не-ASCII символы прямо в вашем URL. Это действительно ненадежно; нет. Незакодированные символы не ASCII вообще недопустимы в URI; они должны быть %
-кодированы (например, с использованием urlencode
). IRI допускают символы не ASCII, которые браузеры могут автоматически кодировать в UTF-8 и% -encode, чтобы превратить их в URI, но IE не (всегда) делает это.
[Также скрипт для обработки строки запроса не будет работать для любого значения , содержащего целевые имена, а не только те, которые начинаются с них.]