2013-03-27 40 views
-2

替換「 到」beteween 「」: 我的問題是在json_decode,創建此JSON 示例數據庫:PHP - 的preg_replace() 「到」之間的 「」

{"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);

+3

[你試過了什麼?請stackoverflow.com/questions/ask-advice)。 – 2013-03-27 14:36:05

+0

使用體面的方法來生成JSON呢? ['json_encode'](http://php.net/manual/en/function.json-encode.php)對此非常有用。 – h2ooooooo 2013-03-27 14:37:36

+0

@JohnConde你有沒有在WHYT上看到[meta discussion](http://meta.stackexchange.com/questions/172758/what-have-you-tried-epidemic)?我做了一個[gist](https://gist.github.com/nojk/5214636),我認爲它更合適。思考? – Kermit 2013-03-27 14:40:25

回答

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"} 
+1

它的工作!非常感謝你 – 2013-03-27 16:23:57

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

+0

我真的需要了preg_replace,像這樣: $率=的preg_replace('/(「+) 「(」+)/',「$ 1」$ 2「,$ return); – 2013-03-27 14:53:03

+0

好吧,然後我不能幫你。正則表達式是不是我的事:S – 2013-03-27 14:55:28

+0

我的問題是json_decode,即@JorgeJúnior創建這個JSON – 2013-03-27 14:57:26