删除json_encode()中的双引号

jor*_*And 6 php json preg-replace double-quotes

我想在我的json_encode中删除双引号,这是我的代码:

<?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 '[]';
}
?>
Run Code Online (Sandbox Code Playgroud)

我的结果是:

[{"id_posiciones":"1",posicion:"1",nick:"biwer",puntos:"1000",uid:"1",pais:"ES",idioma:"ES","device_version":"4"}]
Run Code Online (Sandbox Code Playgroud)

我想删除"id_posiciones"和"device_version"的双引号.

我该怎么做的结果是:

[{id_posiciones:"1",posicion:"1",nick:"biwer",puntos:"1000",uid:"1",pais:"ES",idioma:"ES",device_version:"4"}]
Run Code Online (Sandbox Code Playgroud)

Vij*_*mar 25

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

http://php.net/manual/en/json.constants.php

它将工作> = PHP 5.3.

$encoded = json_encode($data, JSON_NUMERIC_CHECK);
Run Code Online (Sandbox Code Playgroud)

  • @Paul 因此,研究人员不得对不能正确回答问题的答案(即使有帮助)投赞成票!Stack Overflow 上有很多页面都受到高票数错误答案的困扰。这些答案会误导、混淆并浪费研究人员的时间。志愿者内容策展人无法删除这些答案,因为它们获得了太多的赞成票。这是 Stack Overflow 的一个问题。 (3认同)
  • 这不是原来的问题,但它非常有用,这就是我一直在寻找的,谢谢! (2认同)

小智 8

如果你最后在你的正则表达式中添加一个下划线,它就会这样做.

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

我认为这就是preg_replace无论如何.


hek*_*mgl 6

替换此行:

 $array_final = preg_replace('/"([a-zA-Z]+[a-zA-Z0-9]*)":/','$1:',$array_final);
Run Code Online (Sandbox Code Playgroud)

通过:

$array_final = preg_replace('/"([a-zA-Z_]+[a-zA-Z0-9_]*)":/','$1:',$array_final);
Run Code Online (Sandbox Code Playgroud)

请注意,正则表达式类[a-zA-Z]与'_'不匹配