javascript - 如何在 PHP 中从 json_encode() 中去掉 \\" 和 \\""
问题描述
我有一个简单的问题:
我的 JSON 包含以下内容,我将 4500 行精简为几行以表明观点:
{ "status": 200, "statusText": "Success", "result": [ { "id": 44281, "title": "100% Sankey by Richard Kaufman - Book", "qty": 11, "price": "42.0000" }, { "id": 47809, "title": "10 Exact Cuts (BLUE) Henry Evans", "qty": 4, "price": "45.0000" }, { "id": 37650, "title": "10 Exact Cuts (RED) Henry Evans", "qty": 12, "price": "45.0000" },
...
到问题开始的地方
{
"id":50104,
"title":"System 6 - 6 by Six by Michael \\""Six\\"" Muldoon",
"qty":5,
"price":"30.0000"
},
{
"id":67993,
"title":"Acro Index Dry Erase 3\\"X5\\" (Online Instructions) by Blake Vogt - Trick",
"qty":17,
"price":"49.9500"
},
{
"id":70741,
"title":"Acro Index Dry Erase Large 5\\"x8\\"(Online Instructions) by Blake Vogt - Trick",
"qty":113,
"price":"99.9500"
},
]
}
好的,您可以看到我遇到的唯一问题是从我正在使用的 JSON 中删除 \\" 和 \\"" :
if (!empty($result->items->InventoryItem)) {
// echo "Items added between " . str_replace('T', ' ', $starttime) . " and " . str_replace('T', ' ', $endtime) . "<p></p><ul>";
foreach ($result->items->InventoryItem as $item) {
// echo "<li><a href='https://www.somedomain.com/product.aspx?id=" . $item->InternalId . "' target='_blank'>$item->Title</a></li>";
$id = $item->InternalId;
$title = $item->Title;
$qty = $item->QuantityAvailable;
$price = $item->SuggestedRetailPrice;
// get rid of \\" and then \\""
$title = str_replace('5\\"x8\\"', '5x8', $title);
$title = str_replace('\\\\""Six\\\\""', 'Six', $title);
$title = str_replace('3\\\\"X5\\\\"', '3x5', $title);
stripslashes($title);
$return_arr[] = array(
"id" => $id,
"title" => $title,
"qty" => $qty,
"price" => $price
);
}
$return_obj = array (
"status" => 200,
"statusText" => "Success",
"result" => $return_arr
);
// echo "</ul>";
echo var_export(json_encode($return_obj, JSON_PRETTY_PRINT));
} else {
echo "No items found";
}
上面的 JSON 是我返回并在线放入 JSONFormatter 的内容。
我真的想用 'Six' 替换 \\""Six\\"",用 3"x5" 或只是 3x5 替换 3\\"X5\\",用 5x8 或 5" 替换 5\\"x8\\" x8" 因为我不需要转义字符。我知道我可以在 JavaScript 中做到这一点,但是为什么,当 PHP 是我的重担时。
更新和解决方案 这是在下面每个人的帮助下完美运行的方法。谢谢你。
if (!empty($result->items->InventoryItem)) {
// echo "Items added between " . str_replace('T', ' ', $starttime) . " and " . str_replace('T', ' ', $endtime) . "<p></p><ul>";
foreach ($result->items->InventoryItem as $item) {
// echo "<li><a href='https://www.murphysmagic.com/product.aspx?id=" . $item->InternalId . "' target='_blank'>$item->Title</a></li>";
$id = $item->InternalId;
$title = $item->Title;
$qty = $item->QuantityAvailable;
$price = $item->SuggestedRetailPrice;
// get rid of \\" and then \\""
$title = str_replace('5\\"x8\\"', '5x8', $title);
$title = str_replace('\\\\""Six\\\\""', 'Six', $title);
$title = str_replace('3\\\\"X5\\\\"', '3x5', $title);
stripslashes($title);
$return_arr[] = array(
"id" => $id,
"title" => $title,
"qty" => $qty,
"price" => $price
);
}
**// UPDATED to reflect what's below.**
$return_arr[] = array(
"status" => 200,
"statusText" => "Success",
[
"result" => $return_arr
]
);
// echo "</ul>";
echo json_encode($return_arr, JSON_PRETTY_PRINT);
} else {
echo "No items found";
}
第二次更新:快点!
所以,我的 JSON 又回来了,但是,正如你所看到的,我希望 STATUS 和 STATUSTEXT 在结果 [0-99] 之前位于顶部,而不像你在这里看到的那样。
为了清楚起见,这里是 PHP 中更新的 ARRAY:
**// UPDATED to reflect what's below.**
$return_arr[] = array(
"status" => 200,
"statusText" => "Success",
[
"result" => $return_arr
]
);
最后和最终解决方案更新
我知道了!
$obj = (object) [
"status" => 200,
"statusText" => "Success",
"result" => $return_arr
];
echo json_encode($obj, JSON_PRETTY_PRINT);
解决方案
这是解决方案:
if (!empty($result->items->InventoryItem)) {
// echo "Items added between " . str_replace('T', ' ', $starttime) . " and " . str_replace('T', ' ', $endtime) . "<p></p><ul>";
foreach ($result->items->InventoryItem as $item) {
// echo "<li><a href='https://www.somedomain.com/product.aspx?id=" . $item->InternalId . "' target='_blank'>$item->Title</a></li>";
$id = $item->InternalId;
$title = $item->Title;
$qty = $item->QuantityAvailable;
$price = $item->SuggestedRetailPrice;
// get rid of \\" and then \\""
$title = str_replace('5\\"x8\\"', '5x8', $title);
$title = str_replace('\\\\""Six\\\\""', 'Six', $title);
$title = str_replace('3\\\\"X5\\\\"', '3x5', $title);
stripslashes($title);
$return_arr[] = array(
"id" => $id,
"title" => $title,
"qty" => $qty,
"price" => $price
);
}
**// THIS DID IT!**
$obj = (object) [
"status" => 200,
"statusText" => "Success",
"result" => $return_arr
];
echo json_encode($obj, JSON_PRETTY_PRINT);
} else {
echo "No items found";
}
这就是结果的样子
推荐阅读
- python - 如何在本地主机上的 python 中将数据打印为表
- unity3d - 在 Canvas 内计算 3D 对象的大小
- angular - ng-bootstrap 和组件之间的数据绑定不起作用
- ruby-on-rails - 是否可以限制与 ActiveModelSerializers 关联的字段?
- jquery - API数据返回,使用数组显示数据使用JQuery
- kotlin - 为什么 lateinit 不能与 elvis 运算符一起使用,以及它与可选项的具体不同之处
- php - Apache 在子目录中重写 htaccess
- reactjs - 无法通过 webpack/babelrc 转换装饰器(高阶组件)
- python - 主函数不会运行
- java - 无法更改进度条的可见性