2012-12-18 40 views
4

我想刪除雙引號在我json_encode雙引號,這是我的代碼:刪除在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"}] 
+1

你爲什麼要刪除雙引號? –

+0

,因爲我想在我的Android中捕獲這些數據。 – jordiAnd

+0

使用Integer.ValueOf會做到這一點。 – artragis

回答

4

如果你在末尾添加下劃線到你的正則表達式會做到這一點。

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

我認爲這就是preg_replace的意思。

1

您可以使用$.parseJSON解析字符串並從它創建一個JavaScript對象,或更好,但使用的方法類似$.getJSON得到它

5

替換此行:

$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]不匹配「_」

+0

非常感謝hek2mgl :) – jordiAnd

15

您可以使用下列代碼從數值中刪除引號。

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

它將工作> = PHP 5.3。

$encoded = json_encode($data, JSON_NUMERIC_CHECK); 
+0

請注意,這將只從json值中刪除引號而不是密鑰。 – Shadi

2
// 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\"}