1

json_encode(PHP関数を使用して)JSONで画像のURLを返すPHPWebサービスに接続しています。

私はmootools1.2.5システム内で作業していますが、これは携帯電話でも動作する必要があります。

データで返される画像ノードの形式は次のとおりです。

"thumb": "<img src=\"http://photos.imgserv.com/201107222000000.jpg\"  />"

何らかの理由で、response.JSONを渡すと、iphoneとandroidにNULL値が表示されます。response.textオブジェクトを問題なく渡すことができますが、二重引用符が適切にエスケープされていないため、JSON.decodeは失敗します。次のように、画像タグにダブルバックスラッシュを手動で追加すると、次のようになります。

"thumb": "<img src=\\"http://photos.imgserv.com/201107222000000.jpg\\"  />"

すべて設計どおりに機能します。\"ただし、元のresponse.textのを。に置き換えるための適切な正規表現を取得するのに時間がかかり\\"ます。

response.JSONを携帯電話に処理する「正しい」方法はありますか。あるいは、これらのエスケープ文字を処理するためにstring.replace()正規表現を適切に記述する方法はありますか?

ありがとう!

追加する編集:

問題を示すために、シングルバックスラッシュとダブルバックスラッシュが付いた2つのjsfiddleを次に示します。

シングルバックスラッシュ(正しくデコード/解析されません)-http://jsfiddle.net/Qde6F/ ダブルバックスラッシュ(正しくデコード/解析されません)-http://jsfiddle.net/Qde6F/1/

4

1 に答える 1

0

このようなことを試しましたか...

var src = "\"thumb\": \"<img src=\\\"http://photos.imgserv.com/201107222000000.jpg\\\"  />\"";
alert(src);
var dest = src.replace("\\\"","\\\\\"");
alert(dest);

つまり、置換式はreplace("\\\"","\\\\\"")であり、これ\"\\"

わかりました、これはjsfiddlerでうまくいきました

var text = '[{"thumb": "<img src=\"http://photos.imgserv.com/201107222000000.jpg\"  />" }]';

console.dir(text);
var dest = text.replace(/(src=)(\")([^"]+)(\")/g,"$1\\\"$3\\\"");
console.dir(dest);

console.dir(JSON.decode(dest));​

基本的に、正規表現はsrc="url"を に書き換えますsrc=\"url\"

于 2012-06-05T00:04:36.810 に答える