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

Php 将字符串拆分为数组,除非语音标记之间有逗号,php,csv,import,Php,Csv,Import,我正在写一个csv文件的重要脚本。可以选择两个分隔符,逗号或分号。我注意到,在文本文件中,有些文本中间有半冒号和逗号。每个文本字段周围都有语音标记,但有些字段为空,有些字段为数字。我正在寻找一种方法,只分割语音标记之外的文本,而保留文本,而不保留语音标记 这是我用来分割行的当前函数 function parse_lines($p_CSVLines,$c_Names,$separator) { $content = FALSE; if( !is_array($content) )

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

请注意,非常不鼓励使用
split()
,现在不推荐使用。您可以使用
preg\u split()
explode()

<>你想在这里做的是使用正则表达式来搜索不在文本中间的半冒号和逗号。code>preg_split()应使用正确的表达式完成作业


请注意,
split()。您可以使用
preg\u split()
explode()

<>你想在这里做的是使用正则表达式来搜索不在文本中间的半冒号和逗号。code>preg_split()
应使用正确的表达式完成作业


请参见

不知道您是否考虑使用PHP内置的
fgetcsv
(请参见:)-它可以很好地“手动”完成您想要做的事情或str_getcsv()-如果您的csv行不是来自文件。不知道您是否考虑使用PHP内置的
fgetcsv
(请参见:)-它可以很好地“手动”完成您想要做的事情或str_getcsv()-如果您的csv行不是来自文件。