【发布时间】:2012-10-01 22:25:34
【问题描述】:
我正在编写一个 csv 文件重要脚本。有两种分隔符可供选择,逗号或分号。我注意到虽然在文本文件中,一些文本的中间有分号和逗号。每个文本字段周围都有语音标记,但有些字段是空白的,有些是数字的。我正在寻找一种方法来仅拆分语音标记之外的文本,同时保留文本而不是语音标记。
这是我用来分割行的当前函数。
function parse_lines($p_CSVLines,$c_Names,$separator)
{
$content = FALSE;
if( !is_array($content) ) { // the first line contains fields numbers
$this->fields = $c_Names;
$content = array();
}
foreach($p_CSVLines as $line_num => $line){
if($line != ''){ // skip empty lines
$elements = split($separator, $line);
$item = array();
foreach($this->fields as $id => $field){
if( isset($elements[$id]) ){
$field = trim($field,"\"");
$item[$field] = trim($elements[$id],"\"");
}
}
$content[] = $item;
}
}
return $content;
}
【问题讨论】:
-
不知道您是否考虑过使用 PHP 内置的
fgetcsv(参见:php.net/manual/en/function.fgetcsv.php)——它可以很好地“手动”完成您想做的事情 -
或 str_getcsv() - php.net/manual/en/function.str-getcsv.php - 如果您的 csv 行不是来自文件。