-2

将“替换为”之间的“”:我的问题出在 json_decode 中,即创建此 json 的数据库示例:

{"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 回答