2016-05-02 6 views
0

JSONのencondeとJSONのデコードでPHPを使用していくつかのJSONファイルを編集しようとしています。機能Json_encodeはすべて/ behindを追加します/

JSONファイルには、明らかに「/」を使用するURLがいくつかあります。

私はJSON_decodeを使用して、テキストを印刷するとき、私はこのような何かを得る:

url = http://www.example.com/something/hello_1.0; 

その後、私はこのスクリプトを実行します。

$new['versions']  = array(); 
$new['versions'][$version] = current($decode['versions']); 
foreach($decode['versions'] as $sVersion => $aVersion) { 
    $new['versions'][$sVersion] = $aVersion; 
} 
$decode['versions']= $new['versions']; 
$encode = json_encode($decode,JSON_PRETTY_PRINT); 

新しいバージョンを追加するには、しかし、結果は次のとおりです。

url = http:\/\/www.example.com\/something\/hello_1.1; 
url = http:\/\/www.example.com\/something\/hello_1.0; 

json_decode配列を印刷すると、正しく '/'が残ります。

アイデア?

+1

だから何を?ここに問題はありますか?これは、特別なキャラクターを逃れるための方法です。 –

+0

はい。問題はJSONが次のようになっているということです:url = http://www.example.com/something/hello_1.0;それ以外の場合は動作しません – prgrm

+0

何が動作しませんか? URLを使用するには、JSON文字列をデコードしなければならず、エスケープされていないURLを取得する必要があります。 – rinukkusu

答えて

2

json_encodeオプションを使用して、必要なものを達成できます。 特にJSON_UNESCAPED_SLASHESオプションが必要です。 here

例を参照してください:

$url = 'http://www.example.com/something/hello_1.0;' 
echo json_encode($url, JSON_UNESCAPED_SLASHES); 
//Prints: "http://www.example.com/something/hello_1.0;" 
関連する問題