2017-04-04 6 views
2

私はこの変数を持っています:$link = $rows['link'];にはURLが含まれています。 これをエコーするとすべてが問題ありません。例えば:PHP:配列に変換するとスラッシュは "V"になります

https://www.ted.com/talks/margaret_heffernan_why_it_s_time_to_forget_the_pecking_order_at_workhttps://www.ted.com/talks/simon_sinek_why_good_leaders_make_you_feel_safehttps://www.ted.com/talks/regina_hartley_why_the_best_hire_might_not_have_the_perfect_resumehttps://www.ted.com/talks/sheryl_sandberg_why_we_have_too_few_women_leadershttps://www.ted.com/talks/roselinde_torres_what_it_takes_to_be_a_great_leaderhttps://www.ted.com/talks/stanley_mcchrystal#t-319307https://www.ted.com/talks/stanley_mcchrystal#t-319307https://www.ted.com/talks/stanley_mcchrystal#t-319307https://www.ted.com/talks/stanley_mcchrystal#t-319307https://www.ted.com/talks/stanley_mcchrystal#t-319307

その後、私は次のコードで配列にこのURLを保存したいと思います:$result['video'][] = array('id' => $id, 'link' => $link);

ここでの問題は、スラッシュは、「V」さんになるということです。例えば:echo json_encode($result);は私を与える:

{ "ビデオ":[{ "ID": "1"、 "リンク": "https://www.ted.com/talks/margaret_heffernan_why_it_s_time_to_forget_the_pecking_order_at_work"}、{ "id": "2"、 "link": "https://www.ted.com/talks/simon_sinek_why_good_leaders_make_you_feel_safe"}、{"id": "3"、 "link": "https://www.ted "id": "4"、 "link": "https://www.ted.com/talks/sheryl_sandberg_why_we_have_to_few_women_leaders"}、{"id": "5"、 "link" ":" https://www.ted.com/talks/roselinde_torres_what_it_takes_to_be_a_great_leader "}、{" id ":" 6 "、" link ":" https://www.ted.com/talks/stanley_mcchrystal#t-319307 "}、{" id ":" 7 "、" link ":" https://www.ted.com/talks/stanley_mcchrystal#t-319307 "}、{" id ":" 8 "、" link " "https://www.ted.com/talks/stanley_mcchrystal#t-319307"},{"id":"9","link":"https:/ /www.ted.com/talks/stanley_mcchrystal#t-319307"},{"id":"""""""""""https://www.ted.com/talks/stanley_mcchrystal#t-319307 "} ]}

なぜそれがわかるのですか?

ありがとうございます! :)あなたは「\」「/」はJSONが自動的に逆ソリダス文字を追加した任意の文字列をエンコードして、最終的な文字列が何かになったとき

+0

、あなたがそれらをコードJSONとあなたがそれらをデコードするとき、彼らはその後、 '\ /'エスケープスラッシュになって、戻って正常になる – apokryfos

+0

私はそれがちょうどエスケープスラッシュだと思いますか?あなたの引用ブロックには何も見えませんが、Vのように見えますが、実際には\/ – PhilS

+0

です。これは "V"ではなく "\ /"です(すなわち、バックスラッシュ ')を(エスケープするフロントスラッシュ)のために使用します。 –

答えて

4

あなたは、これは問題ではありません

json_encode($result, JSON_UNESCAPED_SLASHES); 
+0

ありがとう!!完全に動作します:) –

+0

あなたは歓迎です – valbrux

1

によってこの問題を解決することができます"\ /"と似ています。これは完全に合法なJSONです。文字列のシリアル化を解除すると、 "\ /"は自動的に "/"に変換されます。出力が適切なJSONパーサーによってシリアル化されていない場合、なぜそれが心配ですか?

出力に "\ /"があると主張する場合は、印刷中にJSON_UNESCAPED_SLASHESフラグを使用できます。 何かのように:json_encode($eg_url, JSON_UNESCAPED_SLASHES);

<?php 
/* 
* @author Saurabh Pandey 
* Escaping the reverse-solidus character ("/", slash) is optional in JSON. 
* 
* This can be controlled with the JSON_UNESCAPED_SLASHES flag constant in PHP. 
* 
*/  

$eg_url = 'http://www.trillbit.com/'; 

echo json_encode($eg_url), "<br>"; 

echo json_encode($eg_url, JSON_UNESCAPED_SLASHES), "<br>"; 

出力:これが問題である理由を私は理解していない

http:\/\/www.trillbit.com\/ 
http://www.trillbit.com/ 
関連する問題