将Excel CSV编号转换为PHP的普通字符串

时间:2014-07-28 08:20:17

标签: php excel csv numbers

我正在处理导入模块,其中管理员可以从CSV文件导入客户端信息行(包括客户端的ID号,这是13位数字值)。

问题似乎是,如果值为8888881111088,Excel会将数字转换为8.88888E + 12,并且我需要验证该数字(即使它是一个字符串)以匹配数据库中的上一个条目)。

不幸的是,我不能依靠管理员将Excel中的这些条目转换为字符串,所以我在PHP中寻找一种方法将不正确的值转换为13位数字/字符串。

非常感谢任何建议!

以下是我正在使用的脚本示例:

 <?php
 // $data contains the rows returned from the CSV file:
 foreach ($data AS $k => $v) {
      /* $v['id_number'] is 8.88888E+12 but in the database it's stored correctly
       * as 888888111088. I need to match the imported value from the CSV to the row
       * in the database.
       * 
       * I need to convert 8.88888E+12 back to 888888111088.
       */
      if (strlen(str_replace(" ", "", $v['id_number'])) != 13) {
            $this->importValidateRules[$k] = "The ID number (" . $v['id_number'] . ") is invalid. It must be 13 characters long.";
      }
      // Continue with model validation:
 }
 ?>

1 个答案:

答案 0 :(得分:0)

通常在数字之前放入'登录单元格可以强制Excel将值用作文本。如果您可以操作原始xls或要求用户在保存到csv之前执行此操作,那么它将起作用(例如,有一个新列并放入B1 cell = CONCATENATE(“'”,A1)} 从csv + php“搞清楚”将无效(精度已经丢失)。