除非语音标记之间有逗号,否则将字符串拆分为数组

时间:2012-10-01 13:51:17

标签: php csv import

我正在编写一个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;
}

1 个答案:

答案 0 :(得分:1)

请注意,强烈建议不要使用split(),现在已弃用。您可以使用preg_split()explode()

您要在此处执行的操作是使用REGEX搜索不在文本中间的分号和逗号。 preg_split()应该使用正确的表达式完成工作。

请参阅http://ca3.php.net/manual/en/function.preg-split.php