我想寫一個正則表達式,它可以讓我解析excel創建的CSV文件。我注意到,當你從excel中導出一個CSV文件時,如果這個字段是一個字符串,它會將它封裝在引號中。如果該字符串本身包含引號,則它會用引號將每個引號轉義出來!匹配不在引號內的逗號
我想要做的是將我解析爲字段的每一行進行分割。鑑於上述情況,當有逗號不在引號內時,我必須分割。我的正則表達式很糟糕,那麼我該怎麼做呢?
我可以用逗號分開,但是我怎麼說當它不在引號之間?
$lines = file($toce_path);
foreach ($lines as $line) {
$line_array = preg_split("/,/", $line);
$test = "($line_array[0], $line_array[1], $line_array[2])";
echo $test.'<br />';
}
This question與我的完全一樣,但它不適用於preg_split。 Preg_split需要與Perl兼容的正則表達式語法。
感謝所有的幫助
是否可以使用正確的CSV分析器? – 2010-08-09 14:29:57
另一個問題的正則表達式似乎與Perl兼容。如果它不起作用,我會感到驚訝。 – 2010-08-09 14:32:00
@mmyers - 我不確定哪些是可用的?我曾嘗試在PHP中查找某些內容,但是我讀了一些評論,指出fgetcsv不適用於由excel創建的CSV。但是我對此非常接近,在正則表達式中我只是沒有希望。 – Abs 2010-08-09 14:33:56