0

で CSV ファイルを解析していますfgetcsv。Magento インストールから CSV エクスポートを取得しました。ただし、解析可能ではありません。このようなエクスポートの問題のある行を次に示します。

200000,Samsung Galaxy S2,$399.00,8806085359376,null,送料無料,新品,在庫あり,Samsung,"Vivid‧Fast‧Slim 新しい GALAXY SII Plus はあなたの生活をさらにスマートにします! 4.3" SUPER AMOLED Plus 4.3" SUPER AMOLED Plus ディスプレイは、すでに優れている SUPER AMOLED をさらに一歩進めて、読みやすさの向上、よりスリムなデザイン、優れたバッテリー消費を提供し、あらゆるスマートフォンの最高の表示値を実現します. フルタッチ ディスプレイ サイズ: 4.3 インチ 解像度: 480 x 800 ピクセル プラットフォーム操作プラットフォーム: Android v4.1 (Jelly Bean) TOUCHWiZ v4.0 ユーザー インターフェイス (最大 7 ページのウィジェット デスクトップ)

問題は"、ファイル内での略記inchなどの使用法です。

preg_replaceコンマが前後にないすべての二重引用符を ing するための RegEx を探しています。しかし、正規表現の知識が乏しく、有効な式を作成できません。これは私が解決策にかなり近いと思うものですが、それを機能させることはできません:

private static function _fixQuotesInString($string)
{
    return preg_replace('/(?<!,)"|"(?!,)/', '&quot;', $string);
}

私の限られた知識でそれを読むと、次のようになります。二重引用符が見つかった場合は、その前にコンマがなく、後にもコンマがないかどうかを確認し、そうであれば "に置き換えます。ただし、経験はそうではないことを示しています。

解決策を投稿する際に、RegExの「音声解説」を追加していただけると、理解できると思います。

4

2 に答える 2

4

どちらも両方の代替条件を同時に満たしていないため、正規表現は両方を置き換え,"ます。",代わりに、引用符の両側をコンマ(?<!,)"(?!,)で囲む必要がないだけを使用できます。

"合法的にコンマが続く場合、解決策にはまだ潜在的な問題があることに注意してください。そのため、この問題の原因を修正することを検討する必要があります。

于 2013-06-03T12:51:26.020 に答える