Незакодированный процент в URL

У меня есть php-скрипт, и кто-то другой генерирует для него URL-адреса.

И этот человек не знал, что символ% должен быть закодирован, поэтому у меня проблема с тем, что apache отказывается от этих запросов. (Неверный запрос)

Итак, мой вопрос: как преобразовать URL-адрес, например site.com/search/one two %, в действительный site.com/search/one two %25?

Спасибо


person dZZx    schedule 07.04.2012    source источник


Ответы (1)


Что-то вроде этого может быть полезно?

preg_replace('/%(\D)/', '%25$1');

Это должно заменить %, за которым следует что-либо, кроме числа, на закодированную версию.

Я отредактирую этот пост позже, чтобы он исключал только те случаи, когда после % нет двух цифр, но это может дать представление.

person Armatus    schedule 07.04.2012
comment
Я думаю, это сработает, но как rewrite_url, потому что ссылки уже сформированы, а скрипт не выполняется, потому что апач выдает плохой запрос - person dZZx; 07.04.2012
comment
Ах да, у вас нет доступа к скрипту до того, как запрос будет отправлен... Извините, я не знаю, что вы могли бы там сделать в этом случае, кроме попытки изменить скрипт отправки. - person Armatus; 07.04.2012