2016-09-29 50 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

相关问题