JavaScript encodeURIComponent против PHP ulrencode - PullRequest
3 голосов
/ 04 сентября 2011

Разница между ними заключается в том, что urlencode PHP кодирует пробелы с + вместо %20?

Какие функции выполняют одно и то же для обоих языков?

Ответы [ 3 ]

15 голосов
/ 04 сентября 2011

Используйте rawurlencode вместо urlencode в PHP.

1 голос
/ 04 сентября 2011

Перейдите по этой ссылке в собственной документации php rawurlencode

rawurlencode добьется цели, ссылка для справки.

0 голосов
/ 10 января 2019

На самом деле даже с JavaScript encodeURIComponent и PHP rawurlencode они тоже не совсем одинаковые, например, символ '(', JavaScript encodeURIComponent JavaScript не будет преобразовывать его, однако PHP rawurlencode преобразует его в% 28. После некоторых экспериментов и советовдругие, такие как этот вопрос другой вопрос Stackoverflow .

Я нашел окончательное решение здесь .

Все, что вам нужно сделать, это использовать следующую команду добавлениякод

function fixedEncodeURIComponent(str) {
    return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
        return '%' + c.charCodeAt(0).toString(16);
    });
}

Теперь они будут ИМЕННО такими же, например

fixedEncodeURIComponent(yourUrl) (JavaScript) = (PHP) rawurlencode(yourUrl)

нет проблем с декодированием, вы можете использовать decodeURIComponent () для JavaScript и rawurldecodeдля PHP

...