2011-12-20 4 views
1

у меня есть:Почему это не делает знак плюса?

$str = 'test%2B'; 
echo html_entity_decode($str); 

Я хочу, чтобы вернуть test +

Что я делаю неправильно?

ПРИМЕЧАНИЕ: Извините, строка не может быть изменена. Это из внешнего источника, мне просто нужно заставить его заменить% 2B + знаком каким-то образом с PHP.

+2

Что это возвращение? –

+0

Возвращает строку обратно точно так же, как она уже есть – David19801

ответ

5

Вы не выбрали место, и вы должны использовать urldecode вместо html_entity_decode.

Попробуйте

$str = 'test%20%2B'; 
echo urldecode($str); // test + 

Если вы хотите использовать html_entity_decode, используйте +:

$str = 'test +'; 
echo html_entity_decode($str); // test + 

EDIT: Если вам нужно декодировать URL, который вы не можете изменить себя, urldecode должно работать нормально.

+0

Что такое downvote? – mc10

0

Попробуйте + вместо этого. В вашем примере вы используете синтаксис кодировки URL, а не синтаксис сущности HTML.

2

Эта строка кодируется для URL-адреса, а не для объектов HTML.

Необходимо urldecode.

echo urldecode($str); // "test +" 

HTML-кодировке строка будет выглядеть следующим образом: test +, потому что ни один из этих символов не требуется HTML-кодирование.

+0

Протестировано, работает! Благодаря!! – David19801

0

В html a + is +. Попробуйте

$str = 'test +'; 
Смежные вопросы