8

私のコードである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 '[]';
}
?>

私の結果は次のとおりです。

[{"id_posiciones":"1",posicion:"1",nick:"biwer",puntos:"1000",uid:"1",pais:"ES",idioma:"ES","device_version":"4"}]

「id_posiciones」と「device_version」の二重引用符も削除したい。

結果に対してどのようにすればよいですか:

[{id_posiciones:"1",posicion:"1",nick:"biwer",puntos:"1000",uid:"1",pais:"ES",idioma:"ES",device_version:"4"}]
4

6 に答える 6

35

この次のコードを使用して、数値から引用符を削除できます。

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

>= PHP 5.3 で動作します。

$encoded = json_encode($data, JSON_NUMERIC_CHECK);
于 2016-05-12T09:39:08.920 に答える
9

最後に正規表現にアンダースコアを追加すると、それが行われます。

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

とにかく、それが preg_replace の目的だと思います。

于 2012-12-18T18:00:26.590 に答える
6

次の行を置き換えます。

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

に:

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

正規表現クラス [a-zA-Z] は「_」と一致しないことに注意してください

于 2012-12-18T17:55:51.573 に答える
1

$.parseJSON文字列を解析してそこからJavascriptオブジェクトを作成するために使用できますが、それ$.getJSONを取得するようなメソッドを使用することをお勧めします

于 2012-12-18T17:55:39.790 に答える