Как заменить знак «+» на соответствующий URL-кодировкой «% 2B»? - PullRequest
23 голосов
/ 22 января 2011

У меня возникли проблемы с заменой знака "+" на строку в кодировке "% 2B". Как я могу это сделать?

Вот что я пробовал:

Текст, введенный в текстовое поле:

plus(+)

Затем я кодирую строку:

$string = urlencode($string);

Строка теперь выглядит так:

plus%28+%29

Я хочу, чтобы urlen-кодировался «+», или когда я urldecode () отображаю данные в браузере, я получаю:

plus( ) 

потому что urldecode () интерпретирует "+" как пробел.

Я пытался использовать php str_replace (), но я продолжаю получать «NULL», возвращаемое в качестве значения для «$ new_string»:

$new_string = str_replace('+', '%2B', $string);

Есть идеи?

Заранее спасибо!

Ответы [ 2 ]

42 голосов
/ 22 января 2011

Это странно.Когда я использую urlencode на plus(+), я получаю plus%28%2B%29.Убедитесь, что вы используете его правильно.

Вы также можете попробовать rawurlencode.Он будет кодировать пробелы как %20 вместо +.

0 голосов
/ 24 октября 2018

Это помогло мне:

function _rawurlencode($string) {
    $string = rawurlencode(str_replace('+','%2B',$string));
    return $string;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...