【问题标题】:Convert a string to an array - PHP [duplicate]将字符串转换为数组 - PHP [重复]
【发布时间】:2012-08-07 21:57:54
【问题描述】:

可能重复:
Load and read a csv file with php

我有以下字符串:

Mr,Tom,Jones,Add1,Add2,"Add3,Add3 extra",Town,County,postcode,99999,888,777

我正在尝试将字符串放入如下所示的数组中:

Array
(
    [0] => Mr
    [1] => Tom
    [2] => Jones
    [3] => Add1
    [4] => Add2
    [5] => "Add3,Add3 extra"
    [6] => Town
    [7] => County
    [8] => Postcode
    [9] => 99999
    [10] => 888
    [11] => 777
)

如果你用“,”来分解字符串,它会将数组项 5 分成两部分,这是我试图避免的。原始数据来自 CSV。

最终,我正在尝试导入 CSV 并动态创建一个新的数据库,其中包含正确的标题和文件内容。

提前致谢。

【问题讨论】:

    标签: php string csv explode


    【解决方案1】:

    试试fgetcsv():

    fgetcsv — 从文件指针获取行并解析 CSV 字段

    【讨论】:

    • str_getcsv() 也可以完成这项工作。
    • 是的,但如果他有一个包含数据的文件(CSV 主要表示“我有一个文件”),那么他应该使用 fgetcsv()。
    【解决方案2】:
    <?php
    $row = 1;
    if (($handle = fopen("test.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            echo "<p> $num fields in line $row: <br /></p>\n";
            $row++;
            for ($c=0; $c < $num; $c++) {
                echo $data[$c] . "<br />\n";
            }
        }
        fclose($handle);
    }
    ?>
    

    来自fgetcsv

    【讨论】:

      【解决方案3】:

      您可以使用str_getcsv()

      str_getcsv — 将 CSV 字符串解析为数组

      【讨论】:

        【解决方案4】:
        $array = str_getcsv( 'Mr,Tom,Jones,Add1,Add2,"Add3,Add3 extra",Town,County,postcode,99999,888,777', ',', '"' );
        

        这会让你得到一个你想要的数组。

        str_getcsv()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-11
          • 1970-01-01
          • 2021-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-05
          • 1970-01-01
          相关资源
          最近更新 更多