1

csvファイルの重要なスクリプトを書いています。選択できる区切り文字は、コンマまたはセミコロンの2つです。ただし、テキストファイルでは、一部のテキストの中央にセミコロンとコンマが含まれていることに気付きました。各テキストフィールドの周囲にはスピーチマークがありますが、一部のフィールドは空白で、一部は数値です。スピーチマークの代わりにテキストをそのままにして、スピーチマークの外側にあるテキストのみを分割する方法を探しています。

これが、行を分割するために使用している現在の関数です。

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;
}
4

1 に答える 1

1

の使用は非常に推奨されていないことに注意してくださいsplit()。現在は非推奨になっています。preg_split()またはを使用できますexplode()

ここで実行したいのは、REGEXを使用して、テキストの中央にないセミコロンとコンマを検索することです。preg_split()正しい表現で仕事を終わらせる必要があります。

http://ca3.php.net/manual/en/function.preg-split.phpを参照してください

于 2012-10-01T14:25:34.997 に答える