如何删除csv中的某些字段缺少某些字段?

时间:2016-09-29 21:20:32

标签: php csv

我有一个输出这样的csv:

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

每一行都是这样的:

Article@Abstract@Authors@Journal@Date@Tags@Pubmed

但是如果缺少一些字段,那么两个符号@@就在一起。例如:

Article@@Authors@Journal@Date@Tags@Pubmed

如何删除这些线? PHP?记事本+ +?正则表达式?

2 个答案:

答案 0 :(得分:0)

听起来您的导出脚本实际上是使用@符号分隔符而不是标准逗号分隔符(逗号分隔值 - CSV)生成CSV。实际发生的是您的导出器正在为单元格找到一个空值,并将该值作为空字符串输出。如果删除这些值,则会导致格式错误的CSV文件,除非这些列中的每个单元格中都存在该空单元格。

如果您已准备好使用正则表达式删除它们,请按以下步骤操作:

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

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

这将只删除双@符号并用空字符串替换它们。您可能希望将其替换为单个@符号或其他内容:

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

同样,这可能会导致格式错误的CSV文件。

答案 1 :(得分:0)

使用记事本++, 正则表达式

^.*@@.*$
  1. 转到搜索面板中的Mark Tab记事本++检查书签行,然后 点击全部标记
  2. 转到文件菜单中的搜索标签,选择书签并选择剪切书签行
  3. 完成。 notepad++ snapshot