3

文字列が$myString = "apple, banana, cherry" あり、このデータを配列に取得したい場合、2 つのオプションがあります。

$myArray = explode(", ", $myString)

また

$myArray = str_getcsv($myString)

どちらも同じ結果になります。

これらの方法のいずれかを使用することの利点/欠点を説明できる人はいますか?

str_getcsv の方が優れていると聞いたことがあります。php のマニュアルによると、「explode() は、文字列の囲まれた部分やエスケープ文字を正しく処理しないためです」。

簡単な例を使って、これが何を意味するのか説明してもらえますか?

ありがとう

4

1 に答える 1

12

str_getcsv次のような CSV で動作します。

 "column 1", "column 2", and the third part
 123, 567, 89

引用された部分をすべてアンラップし、両端からスペースを取り除きます。

これで、単純化した爆発でもスペースのトリミングが行われます。しかし、多少の差異がある場合、失敗するか、信頼性が低くなります。

1,2,3, 4, 5,   6,   7

各ビットの後に常に1 つのカンマと 1 つのスペースがあることが確実な場合は、explode(", "それで十分です。しかし、str_getcsv はもう少し賢いです。マニュアルのヒントが示唆しているように、区切り文字を引用符で囲むこともできます。

"column 1 contains a , comma", "col 2 starts here"

単純な爆発では、含まれているコンマとスペースの特別な処理に気付かない場合。

于 2013-03-16T01:07:47.897 に答える