2016-10-06 79 views
0

我有什麼:CSV解析爲Shopify

,它分析用戶的CSV文件中的laravel應用。該文件中的數據包含一個帶有HTML代碼的字段。它被封裝爲「。

某些行沒有標籤。我將具有標籤的行作爲目標,然後使用行號保存一個變量,以便我以後可以進行編輯。

Item 837, Description, "<h1>HTML code</h1><br/><h2>eh<h2>", Some Other Data, "Tag 1"

我使用http://maatwebsite.nl/laravel-excel它採用PHPExcell

我的問題

  1. Shopify要求所有字段不要用雙引號括起來;僅用於HTML代碼和標籤字段。

  2. 當我解析數組時,在HTML代碼中找到的每個\ r \ n \ n中,它都會跳轉到一個新的數組項中。

我想要什麼

解析CSV數據出來像

[id] => 12, 
[tags] => "tag 1, tag 2", 
[body] => "<html></html>", 
[variable] => description text, 

數組,當我出口,我想數據在記事本看起來像這樣

12, "tag 1, tag 2", "<html></html>", description text,,,,,,,,

我已經試過

  1. 設置LaravelExcell圈地什麼這就造成了混亂。每當HTML代碼中有一個換行符(LF)時,解析器就會跳到一個新行中。

  2. 嘗試使用file_get_contents和str_replace將\ r \ n替換爲空,以便LaravelExcel不會像瘋狂一樣跳轉。因爲我需要HTML格式保持不變,所以沒有成功。

  3. 在導入時使用Config::set('excel.csv.enclosure', '"');,在導出時使用Config::set('excel.csv.enclosure', '');。導出文件都搞砸了。

+0

嘗試通過'$ csv = array_map('str_getcsv',file('data。csv'));'應該更容易處理。 – user3158900

+0

\ r \ n仍然使html字段中的行跳轉到下一個數組。這真讓我煩惱。 – Spacemudd

+1

您是否考慮過使用[產品API](https://help.shopify.com/api/reference/product)? –

回答

0

我決定繼續使用PHPExcel,因爲它提供了一種使用線外殼",定界符的organizable陣列來解析CSV數據。

但是,在導出文件時,我放棄了PHPExcel類,而是使用fopen()和fwrite()將數組中的所有內容解析爲Shopify/csv格式。 有很多preg_match &如果一個字段包含一個逗號這樣的語句,它會用"把它括起來。