php 读取 txt 文件的时候,第一行总是 不能正确识别数字,怎么办呢?
高洛峰
高洛峰 2016-10-31 09:40:07
[PHP讨论组]

我逐行读取一个 txt 文件的内容,
但是每个文件第一行总是不能正确识别,
请问怎么做呢?

    $rTxt = fopen( $sTxt  ,"r" );
    
    while( $str = fgets($rTxt) )
    {
    
        $arr = explode( ',' , $str );
        Var_Dump( $arr[0] );
    }
    
    fclose( $rTxt );

txt 文件内容:

1393592460,10680,10660,10650,10720,6040,3.227103E+08,0,0,108,4746,0,0
1393592520,10656,10697,10656,10701,4888,2.612444E+08,0,0,203,6858,0,0
1393592580,10697,10672,10672,10700,1294,6.911194E+07,0,0,281,7086,0,0
1393592640,10671,10667,10661,10675,1706,9.101747E+07,0,0,354,7590,0,0
1393592700,10669,10650,10648,10670,2340,1.246486E+08,0,0,448,8664,0,0
1393592760,10652,10640,10632,10656,1938,1.031578E+08,0,0,545,9282,0,0
1393592820,10641,10657,10641,10662,1746,9.297165E+07,0,0,631,8922,0,0
......

每次读取的时候,文件第一行的第一个数字长度总是不对,应该有个看不见的字符串..:

string(13) "1393592460"
string(10) "1393592520"
string(10) "1393592580"
string(10) "1393592640"


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

很有可能是utf8 bom字符。
引用 SO How to remove multiple UTF-8 BOM sequences

//Remove UTF8 Bomfunction remove_utf8_bom($text){ 
   $bom = pack('H*','EFBBBF'); 
   $text = preg_replace("/^$bom/", '', $text); 
   return $text;
}

用这个函数处理一下你的第一行应该就好了。



热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号