PHP读取字符串作为指数

时间:2017-12-29 14:34:03

标签: php codeigniter csv

我正在阅读CSV文件以导入数据。我有一个列有一些自动生成的数字(文本和数字)。问题是在某些行中,我的脚本将值读为指数。 enter image description here

示例:58597E68被视为5.86E + 72

我需要将它读作字符串而不是数字。仅当我在自动生成的数字的中间有字符(E)时才会出现此问题。

$feed = 'path-to-csv/import.csv';
    if (!file_exists($feed)) {
        //$feed = 'import.csv';
        exit('Cannot find the CSV file: ' . $feed);
    }
    $row=0;

    if (($handle = fopen($feed, 'r')) !== FALSE) {
        while (($data_csv_rows = fgetcsv($handle, 1000000, ',')) !== FALSE) {

            $row++;
            if ($row == 1) {
                continue;
            } // skipping header row
            echo "Row " . ($row-1) . "<br>";print_r($data_csv_rows);echo "<br><br>";
        }
    }

1 个答案:

答案 0 :(得分:1)

问题不在于您的CSV,而在于生成CSV的原始软件(可能是Excel)。

CSV是一种简单的数据格式,当您在CSV数据中找到类似5.86E+72之类的内容时,它就太晚了,无法修复它。

为避免这种情况,请确保export the data correct into CSV

用于在字段中查找此类错误数据的一些PHP代码:

if (strpos($value, 'E+') !== FALSE) {
    preg_match('~E\+[0-9]+$~', $value, $preg_result);
        if (isset($preg_result[0])) {
            die('Probably wrong data found within "'.$value.'".');
        }
    }
}

在您it seems 58597E68 float(5.8597E+72)转换为58597E68的情况下。

至少str_getcsv()我无法重新创建问题,请参阅https://3v4l.org/RZ1eA

definition这是正确的,因为没有&#34;围绕这些数据,所以PHP试图确定这些数据的类型,如果它是一个强大的数值...所以一定要添加&#34;围绕弦乐。 PHP String to Numeric Conversion documentation

更新:我无法重现您的用例! "58597E68"变为str_getcsv() fgetcsv()pipelines: default: - step: name: Build and test JS. image: node:8.9.3 script: - npm install - npm test - npm run-script build - step: name: Build and test PHP. image: php:7-fpm script: - echo "Here will be the Composer build and PHPUnit tests." branches: production: - step: name: Build and test JS. image: node:8.9.3 script: - npm install - npm test - npm run-script build artifacts: - dist/** - step: name: Build and test PHP. image: php:7-fpm script: - echo "Here will be the Composer build and PHPUnit tests." artifacts: - dist/** - step: name: Deploy to FTP. image: samueldebruyn/debian-git script: - apt-get update - apt-get -qq install git-ftp - ls public_html - git ftp push --user $FTP_USERNAME --passwd $FTP_PASSWORD ftp://$FTP_HOST 它不会自动转换为浮动!有关详细信息,请参阅https://3v4l.org/oXkBu!我怀疑您提供给我们的数据或您的验证有问题。