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

使用PHP读取CSV文件时字符串长度不正确,php,csv,fopen,fgetcsv,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"; head

我正在使用下面的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>";
}

?>
有没有办法正确获得字符串长度?这种行为的原因是什么?
谢谢

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

而不是
strlen()
尝试使用
mb strlen()

我知道这种行为的原因。我使用excel创建了csv,似乎excel正在将数字重新格式化为一种科学格式。谢谢。我试过了。但它给出了相同的结果结果为strlen()。似乎与streng()无关,excel正在用科学记数法重新设置数字格式。感谢您的回复。在我的例子中,csv包含电话号码。因此,不会因为小数而出现任何问题。您的回答为我完成了这项工作。非常感谢。正如@RiggsFolly所建议的,下面的问答说明了原因。
71455169311 Length: 11
7.14552E+16 Length: 11