1

PHPを使用して解析したいCSVファイルがあります(私の場合は遅すぎるため、php csv関数を使用したくありません)。preg_replace を使用して、必要な列のみを選択し、出力を標準出力に書き戻します。私はそのようなパターンを持っています

preg_replace("/^\"([^\"]*)\",\"([^\"]*)\"(.*)$/m", "$1;$2", $content);

CSV に不正な行がいくつかあります。上記のパターンに一致しない行の出力をスキップする方法はありますか?

4

1 に答える 1

2

次の 2 つの手順で実行できます。

まず、正規表現に一致しないすべての行を削除します。

preg_replace("/^(?!\"([^\"]*)\",\"([^\"]*)\".*$).*\r?\n/m", "", $content);

次に、元の正規表現の置換を行います。

ただし、十分に注意する必要があります。CSV フィールドで改行やエスケープされた引用符を取得するとすぐに、これらの正規表現が破損してファイルを破壊する可能性があります。

または、次のような不正な行を想像してください

"foo","bar (missing quote!)
"baz", "bam" (correct line)

正規表現は、改行も食べるため、不完全な行正しい行の両方を削除します。[^\"]*

于 2013-01-21T11:27:33.667 に答える