如何从通过php查询转换的json中删除双引号

时间:2016-02-18 08:48:12

标签: php json magento curl

我有一个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无效错误。

注意:有些产品的高度,尺寸和内容都包含双引号,如上所示。

0 个答案:

没有答案