-2

" を ' beteween "" に置き換えます: 私の問題は、この json を作成するデータベースである json_decode にあります 例:

{"LOGRADOURO":"Joana D"Arc",
 "NUMERO":"257",
 "COMPLEMENTO":"",
 "BAIRRO":"barreiro"}

{"LOGRADOURO":"Joana D'Arc",
 "NUMERO":"257",
 "COMPLEMENTO":"",
 "BAIRRO":"barreiro"}

次のような preg_replace が本当に必要です: $return = preg_replace ('/ ("+)" ("+) /'," $1"$2", $return);

4

2 に答える 2

0

最初に配列を使用してから、各エントリの"幅を置き換えることができます。'その後、使用しますjson_encode。データが json の場合は、json_decode最初に使用します。

$str = array(
'LOGRADOURO'=> 'Joana D"Arc',
'NUMERO'=>'257',
'COMPLEMENTO'=>'',
'BAIRRO'=>'barreiro'
);

foreach($str as $sk => $s) {
$str[$sk] = str_replace('"', "'", $s);
}

echo json_encode($str);

addslashes文字列内のエラーがさらに発生するのを防ぎたい場合は、参照することもでき"ます。

于 2013-03-27T14:49:39.723 に答える
0

すべての二重引用符を置き換えることはできないため、一種のブラックリストを作成します。の前にある二重引用符は:{,置き換えてはなりません。二重引用符の後に来るものについても同様:},です。これを機能させるには、改行/スペースを削除する必要がありました:

$json = '{"LOGRADOURO":"Joana D"Arc",
 "NUMERO":"257",
 "COMPLEMENTO":"",
 "BAIRRO":"barreiro"}';

$json = preg_replace(
array('/",[\s\r\n]+"/',          '/([^\:\{\,])(")([^\:\}\,])/'),
//       vvvvvvvvv                 vvvvvvvvvvvvvvvvvvvvvvvvv
// To remove the new lines         Replacing valid " with '
array('","', "$1'$3")
, $json);

echo $json; // {"LOGRADOURO":"Joana D'Arc","NUMERO":"257","COMPLEMENTO":"","BAIRRO":"barreiro"}
于 2013-03-27T15:31:25.603 に答える