我正在使用以下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的示例行。
对于这两行,字符串长度都显示为11。对于第一行,它是正确的,但是第二行有16个字符。似乎对于任何具有超过11个字符的值,字符串长度都显示为11(使用strlen时)。下面显示了我上面2行的php脚本。
71455169311 Length: 11
7.14552E+16 Length: 11
有什么方法可以正确获取字符串长度?这种行为的原因是什么?谢谢
似乎fgetcsv
可以返回整数/浮点数,不仅返回字符串。如果需要确切的数字,那么我不知道fgetcsv
是否也可以将所有内容都返回为字符串,但是如果只需要字符串的长度,则可以使用strlen(number_format($line[0], 0, '.', ''))
(这是假设数字没有小数点)。
代替strlen()
尝试使用mb_strlen()
。