php txt多一行问题,php读取txt文件的时候,第一行总是不能正确识别数字,怎么办呢?...

在读取TXT文件时遇到第一行数字识别错误,原因是存在不可见的UTF-8 BOM字符。可以使用PHP的函数去除UTF-8 BOM,如`remove_utf8_bom()`,该函数通过正则表达式匹配并移除BOM,从而解决首行数字长度不正确的问题。了解BOM对于正确解析UTF-8编码文件至关重要。
摘要由CSDN通过智能技术生成

5268f80b9b1e01f982625ef6fac83ca1.png

我逐行读取一个 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"

回复内容:

我逐行读取一个 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"

很有可能是utf8 bom字符。

引用 SO How to remove multiple UTF-8 BOM sequences

//Remove UTF8 Bom

function remove_utf8_bom($text)

{

$bom = pack('H*','EFBBBF');

$text = preg_replace("/^$bom/", '', $text);

return $text;

}

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

想知道更多关于BOM的知识:

知乎 - 「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别

维基百科

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值