2011-12-20 10 views
1

私が持っている:これはなぜプラス記号を作っていないのですか?

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

が、私はそれが私が間違って何をやっているtest +

返すようにしたいですか?

注:文字列は変更できません。それは外部ソースからのもので、%2BをPHPで+記号で置き換えるだけです。

+2

試してみてください? –

+0

文字列をそのまま返しています – David19801

答えて

5

スペースをエスケープしていないため、html_entity_decodeの代わりにurldecodeを使用する必要があります。あなたがhtml_entity_decodeを使用したい場合は

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

を試してみて、+を使用します。

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

はEDIT:あなたは自分自身を変更することはできませんURLをデコードする必要がある場合は、urldecodeはまだ正常に動作する必要があります。

+0

downvoteとは何ですか? – mc10

0

代わりに+を試してください。あなたの例では、HTMLエンティティ構文ではなくURLエンコーディング構文を使用しています。

2

この文字列はURL用にエンコードされ、HTMLエンティティ用にはエンコードされません。

urldecodeが必要です。これらの文字のいずれもHTMLエンコードを必要としないので、test +

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

HTMLエンコードされた文字列は次のようになります。

+0

テスト済みです。ありがとう!! – David19801

0

htmlで++です。それが何を返している

$str = 'test +'; 
0
$str = "test %2B"; 
echo urldecode($str); 
関連する問題