2016-09-29 52 views
0

我有這樣的輸出CSV一個PHP:如何從csv中刪除行,但某些字段丟失?

view-source:http://dentopolis.org/scr/pubfeed/csv.php 

每一行看起來是這樣的:

[email protected]@[email protected]@[email protected]@Pubmed 

但如果有些領域缺少,地方兩個符號@@在一起。例如:

[email protected]@[email protected]@[email protected]@Pubmed 

如何刪除這些行? php?notepad ++?regex?

+0

'sed -i.bak'/ @@/d'articles.csv' – bishop

回答

0

聽起來好像您的導出腳本實際上是使用@符號分隔符代替標準逗號分隔符(逗號分隔值 - CSV)生成CSV。實際發生的情況是,您的出口商正在爲單元格找到一個空值,並將該值作爲空字符串輸出。如果刪除這些值,則會導致格式錯誤的CSV文件,除非這些列中的每個單元格中都存在空單元格。

如果您在使用正則表達式消除他們死心塌地,這裏是如何做到這一點在PHP中:

$pattern = '/\@\@/'; 
$csv_content = 'big long string here'; 

echo preg_replace($pattern, '', $csv_content); 

這隻會去除雙@標誌和空字符串替換它們。你可能想,而是用一個@標誌或別的東西代替它們:

echo preg_replace($pattern, '@', $csv_content); 

同樣,這可能會導致畸形的CSV文件。

+0

一些pubmed articled不包含抽象,我不需要結果中的那些行,這就是爲什麼我需要刪除整個線。 – user2554683

0

使用記事本++, 正則表達式

^.*@@.*$ 
  1. 轉到馬克選項卡中搜索潘內爾記事本++檢查書籤線,並 單擊標記全部
  2. 去搜索選項卡中的文件菜單中選擇書籤,並選擇割書籤線

完成。 notepad++ snapshot

相關問題