php - 使用 PHP 读取 CSV 文件时字符串长度不正确

标签 php csv fopen fgetcsv

我正在使用以下 php 代码逐行读取 CSV 文件。

<?php
$temp=0;
$s="http://localhost/BulkMessage/Uploads/Number_Files/f7aa248e5fce52411723_CSV_7xxxxxxxx.csv";
try
{
    $file = fopen($s, 'r');
} catch (Exception $ex) {
    $_SESSION['error']="Can't read the file";
    header('Location: '.'../view_sending_rich_message.php');
}
while (($line = fgetcsv($file)) !== FALSE)
{
    echo $line[0]." Length: ".strlen($line[0])."<br>";
}

?>

读取过程按预期进行,但是当我尝试打印行的长度时,它显示了一些异常行为。 这些是我的 CSV 中的一些示例行。

  1. 71455169311
  2. 71455169112222100

对于这两行,字符串长度显示为 11。对于第一行,它是正确的,但第二行有 16 个字符。似乎对于任何超过 11 个字符的值,字符串长度显示为 11 (当使用 strlen 时)。 下面显示了我的 php 脚本中上述两行的内容。

71455169311 Length: 11
7.14552E+16 Length: 11

有什么方法可以正确获取字符串长度吗?这种行为的原因是什么? 谢谢

最佳答案

看来fgetcsv可以返回整数/ float ,而不仅仅是字符串。如果需要确切的数字,那么我不知道 fgetcsv 是否也可以将所有内容作为字符串返回,但如果只需要字符串的长度,您可以使用 strlen(number_format ($line[0], 0, '.', '')) (假设数字没有小数)。

关于php - 使用 PHP 读取 CSV 文件时字符串长度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59646446/

相关文章:

php - 使用 php preg_replace 更改 html 链接的 href 属性

php - 如何使用 PHP 5.5.14 在 Yosemite 上启用 fastcgi

c - 如何在不同位置打开文件?

C fopen模式读+写+创建

php - PDO PHP - PDOException - 数值超出范围 : 1264 Out of range value for column 'customer_id' at row 1

php - 类型检查所有数组元素

r - 使用 R 将不同的数据帧写入一个 .csv 文件中

Excel 2007 将工作表另存为 CSV 与在 VBA 中将工作表另存为 csv 不同

python - 循环只删除两项?

php - 如何让 fopen 正确超时?