我有一个json格式的字符串,但这是无效的json格式,因为我通过php循环查询它
{"a":"" works our ‘T’ logo into an intricately perforated pattern. logo — pattern. Height: .36"" (.9 cm) Length: .29"" (.7 cm) " " }
我需要输出
{"a":"works our ‘T’ logo into an intricately perforated pattern. logo †pattern. Height: .36 (.9 cm) Length: .29 (.7 cm)"}
(我认为这应该是正确的格式)
我尝试了 str_replace ,但它也从开头和结尾删除引号,而 trim()方法也删除了字符串中的所有双引号。
<?php
$a = "" works our ‘T’ logo into an intricately perforated pattern. logo — pattern. Height: .36"" (.9 cm) Length: .29"" (.7 cm) " " ;
echo str_replace('"',"",$a);
?>
我收到此错误: 行:2,错误类型:4 消息:语法错误,意外&#39;工作&#39; (T_STRING)
注意:这个值是从DB获取的,我需要它发布到一些api,以便他们可以从我们的api获取所有值。我真的不想在我们的数据库或我们的后端进行任何更改,这个值来自何处。
提示或小解决方案可以帮助我思考。
//要更多地了解我正在使用json做什么 //见下面的代码。
<?php
ini_set('max_execution_time', 0);
require __DIR__ . '/app/Mage.php';
umask(0);
Mage::app();
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect("name");
foreach($collection as $product){
$product_name = strip_tags($product->getName()); //get name of the product
$result = array();
foreach ($products as $product1) {
$label = array_reduce(
$someattrbute,
function ($carry, $item) use ($product1) {
return $carry . $product1->getAttributeText($item) . ' ';
},
''
);
$result[trim($label)] = $product1->getQty();
}
$product_sizeandquantity = json_encode($result); //result
$products_data.= "{";
$products_data.= '"product_name"'.":".'"'.$product_name.'",';
$products_data.= '"product_stock"'.":".'['.$product_sizeandquantity.'],';
$products_data.= "},";
$products_data = rtrim($products_data, ',');
$products_data.= "]";
//echo $products_data;
$url = 'https://www.yourdomain.com/products';
$api_key = 'mykey';
$sec_key = 'secretkey';
$data='scapi_key='.urlencode($api_key).'&scsecret_key='.urlencode($sec_key)."&products=".urlencode($products_data);
//echo $data;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded')
);
$response = curl_exec($ch);
curl_close($ch);
$arr = json_decode($response, true);
echo $arr;
?>
这是我得到的json,这只适用于一种产品,但有很多,因为它是foreach循环:
[{"product_name":"Flats", "product_stock":[{"38":"1.0000"}]}]
我认为这是有效的json,但仍然想知道在上面的代码中通过curl的post请求可以做些什么,因为错误显示它的json无效错误。
注意:有些产品的高度,尺寸和内容都包含双引号,如上所示。