1

我正在连接到以 JSON 格式返回图像 URL 的 PHP Web 服务(使用 PHPjson_encode函数)。

我在 mootools 1.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() 正则表达式来处理这些转义字符?

谢谢!

编辑添加:

这是两个带有单反斜杠和双反斜杠的 jsfiddles 来显示问题:

单反斜杠(不正确解码/解析)-- 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"to src=\"url\"

于 2012-06-05T00:04:36.810 回答