2013-06-27 48 views
0

我有一些客戶數據,我使用PHP腳本從CSV轉換爲json。PHP str_replace例外

一次轉換的數據都混在一起,像這樣:

[{ 「客戶號」: 「12345」, 「客戶名稱」: 「顧客1」, 「地址代碼」: 「主」, 「銷售員ID」:「aa」,「發貨至地址1」:「12345」,「發貨至地址2」:「123,假街」,「發貨至地址3」:「」,發貨至城市「: 「多倫多」,「運送到省」,「ONTARIO」,「運送到郵政編碼」:「A1A 1A1」,「國家代碼」:「CA」,「運送到國家」:「加拿大」,「 「:」John Doe「,」運送至電話「:」416-555-5555「,」運送至傳真「:」416-555-5552「,」運送方式「:」我們的卡車「,」賬單地址1 「:」12345「,」地址2的帳單「:」123,虛假的街道「,」地址3的帳單「:」「,」城市帳單「:」多倫多「,」比爾省「:」安大略省「, 「郵資編號」:「A1A 1A1」,「電話單」:「416-555-5555」,「稅表ID」:「HST ON/S」,「Locati代碼「:」TOR「,」支付條款ID「:」30天PD檢查「,」信用額度金額「:」2,000.00「,」評論1「:」30D PDC/10/11-NSF = WR BK ACCT「, 「Comment2」:「」,「Hold」:「1」,「Price List」:「EASTGEN」}]

然後,我使用一些str_replace來組織輸出,並使其看起來不錯。這裏是我的:

$ newArray = str_replace(「:」,「:」,json_encode($ newArray));

$ newArray = str_replace(「[」,「[\ n」,$ newArray);

$ newArray = str_replace(「{」,「{\ n」,$ newArray);

$ newArray = str_replace(「,」,「,\ n」,$ newArray);

$ newArray = str_replace(「},」,「\ n},」,$ newArray);

$ newArray = nl2br($ newArray);

我遇到的問題是,出現這樣的輸出:

[

{

「客戶號」: 「12345」,

「客戶名稱」: 「customer 1」,

「Address Code」:「PRIMARY」,

「銷售人員ID」: 「AA」,

「船到地址1」: 「12345」,

「船到地址2」: 「123,

假街」,

「船到地址3」: 「」,

「船到城市」: 「多倫多」,

「船到省」: 「ONTARIO」,

「艦郵政編碼」: 「A1A 1A1」,

「國家代碼」: 「CA」,

「艦國」: 「加拿大」,

「艦聯絡人「: 」李四「,

」船到手機「: 」416-555-5555「,

」船到傳真「: 」416-555-5552「,

」 配送方式「:」我們的卡車「,

「比爾到地址1」: 「12345」,

「比爾到地址2」: 「123,

假街」,

「比爾到地址3」: 「」 ,

「比爾市」: 「多倫多」,

「條例草案省」: 「ONTARIO」,

「膽紅素l至郵編「: 」A1A 1A1「,

」比爾到手機「: 」416-555-5555「,

」稅率表ID「: 」HST ON/S「,

「地點代碼」: 「TOR」,

「付款方式ID」: 「30天PD CHECK」,

「信用限額」:「2,

000。00" ,

「註釋1」: 「30D PDC/10/11-NSF = WR BK ACCT」,

「註釋2」: 「」,

「保持」: 「1」,

「價格表」:「EASTGEN」}]

請注意運送到地址2,對地址的賬單2,與信貸限額,因爲我str_replace函數它增加了一個換行符有問題的。我使用的應用程序讀取json需要它在同一行上正確註冊。有沒有一種方法可以替換逗號的機智h是換行符,除非它們是地址或其他變量的一部分?

+0

我認爲你應該使用regexp –

+0

@NDLombardi,是否允許我指定例外,如果逗號前面有一個數字(該條件看起來好像會起作用) – degett

+0

當然,如果你可以試試這個:[ http://regexpal.com/](http://regexpal.com/) –

回答

1

你爲什麼要修改JSON編碼的字符串?如果你只是想讓它看起來很「漂亮」,那麼你應該使用json_encode($str, JSON_PRETTY_PRINT) - 不要對字符串做任何其他修改。

+0

這工作的結構!謝謝。 – degett

+0

沒問題;請務必標記爲答案!謝謝 –