Php 删除json_encode()中的双引号

Php 删除json_encode()中的双引号,php,preg-replace,json,double-quotes,Php,Preg Replace,Json,Double Quotes,我想删除json_编码中的双引号,这是我的代码: <?php require_once 'config.inc.php'; //## Clase Base de Datos require_once 'Database.class.php'; //## Obtengo los parametros pasados por el metodo GET $params = $_REQUEST; $db = new Database(DB_SERVER, DB_USER, DB_PASS,

我想删除json_编码中的双引号,这是我的代码:

<?php

require_once 'config.inc.php';
//## Clase Base de Datos
require_once 'Database.class.php';
//## Obtengo los parametros pasados por el metodo GET
$params = $_REQUEST;

$db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
$db->connect();

$result = mysql_query("SELECT * from ranking WHERE posicion BETWEEN     ".$params['pos_ini']." AND ".$params['pos_fi']) or die('Could not query');

if(mysql_num_rows($result)){
    $array_json=array();
    $filas = mysql_num_rows($result);
    $columnas = mysql_num_fields($result);

    for($i=0;$i<$filas;$i++)
    {
        $fila_dato = mysql_fetch_assoc($result);
        for($k=0;$k<$columnas;$k++)
        {
                    $campo = mysql_field_name($result,$k);
                    $campo = str_replace('\"', '', $campo);
                    $array_json[$i][$campo] = $fila_dato[$campo];
        }
    }
    $array_final = json_encode($array_json);
    $array_final = preg_replace('/"([a-zA-Z]+[a-zA-Z0-9]*)":/','$1:',$array_final);
    echo $array_final;
} else {
    echo '[]';
}
?>
我想删除“id位置”和“设备版本”的双引号

我该如何处理结果是:

[{"id_posiciones":"1",posicion:"1",nick:"biwer",puntos:"1000",uid:"1",pais:"ES",idioma:"ES","device_version":"4"}]
[{id_posiciones:"1",posicion:"1",nick:"biwer",puntos:"1000",uid:"1",pais:"ES",idioma:"ES",device_version:"4"}]
您可以使用解析字符串并从中创建Javascript对象,或者更好地使用类似于获取字符串的方法替换此行:

 $array_final = preg_replace('/"([a-zA-Z]+[a-zA-Z0-9]*)":/','$1:',$array_final);
作者:


请注意,正则表达式类[a-zA-Z]与''.'

不匹配,如果在正则表达式的末尾添加下划线,它就会这样做

$array_final = preg_replace('/"([a-zA-Z]+[a-zA-Z0-9_]*)":/','$1:',$array_final);

我想这就是preg_replace的作用。

您可以使用下面的代码从数值中删除引号

它将工作>=PHP5.3

$encoded = json_encode($data, JSON_NUMERIC_CHECK);

为什么要删除双引号?因为我想在Android中捕获该数据。使用Integer.ValueOf即可。请注意,这将仅删除json值中的引号,而不删除键。这不是原始问题的内容,但非常有用,也是我一直在寻找的,谢谢@出于这个原因,研究人员不能对那些不能正确回答问题的答案(即使有帮助)进行投票!有许多关于堆栈溢出的页面被高度向上投票的错误答案所困扰。这些答案误导、迷惑和浪费研究人员的时间。志愿者内容管理员无法删除这些答案,因为他们获得了太多的投票。这是堆栈溢出的一个问题。不要手动破解json字符串,即使这是一种更专业的方式。不要手动破解json字符串,即使它是一种更专业的方式。我没有破解任何东西,我只是修复了他的正则表达式:)一旦他去掉引号,它甚至不是json,所以我认为他有理由这么做。不管怎样,为什么不这么做,还有什么更专业的方法呢?我不为Android编写代码,所以我不知道为什么这是必要的。不建议使用字符串函数来改变json字符串,因为可能会产生意外后果。专业的方法是对解码后的数据进行变异。我觉得这个问题很奇怪。也许artragis的解决方案更为理想。
$encoded = json_encode($data, JSON_NUMERIC_CHECK);
// use can use addslashes() function for storing in mysql database 
// or remove  slashes  u can use stripslashes() function.

$json_array = array(
'title' => 'Example string\'s with "special" characters'
);

echo $json_decode =addslashes(json_encode($json_array));


output-{\"title\":\"Example string\'s with \\\"special\\\" characters\"}