首頁 > 後端開發 > php教程 > php 讀取 txt 檔案的時候,第一行總是 無法正確辨識數字,怎麼辦呢?

php 讀取 txt 檔案的時候,第一行總是 無法正確辨識數字,怎麼辦呢?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2023-03-02 10:06:02
原創
1380 人瀏覽過

我逐行讀取一個 txt 檔案的內容,
但是每個檔案第一行總是不能正確辨識,
請問怎麼做呢?

<code>    $rTxt = fopen( $sTxt  ,"r" );
    
    while( $str = fgets($rTxt) )
    {
    
        $arr = explode( ',' , $str );
        Var_Dump( $arr[0] );
    }
    
    fclose( $rTxt );</code>
登入後複製
登入後複製

txt 檔案內容:

<code>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
......</code>
登入後複製
登入後複製

每次讀取的時候,文件第一行的第一個數字長度總是不對,應該有個看不見的字符串..:

<code>string(13) "1393592460"
string(10) "1393592520"
string(10) "1393592580"
string(10) "1393592640"

</code>
登入後複製
登入後複製

回覆內容:

我逐行讀取一個 txt 檔案的內容,
但是每個檔案第一行總是不能正確辨識,
請問怎麼做呢?

<code>    $rTxt = fopen( $sTxt  ,"r" );
    
    while( $str = fgets($rTxt) )
    {
    
        $arr = explode( ',' , $str );
        Var_Dump( $arr[0] );
    }
    
    fclose( $rTxt );</code>
登入後複製
登入後複製

txt 檔案內容:

<code>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
......</code>
登入後複製
登入後複製

每次讀取的時候,文件第一行的第一個數字長度總是不對,應該有個看不見的字符串..:

<code>string(13) "1393592460"
string(10) "1393592520"
string(10) "1393592580"
string(10) "1393592640"

</code>
登入後複製
登入後複製

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

<code>//Remove UTF8 Bom

function remove_utf8_bom($text)
{
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/^$bom/", '', $text);
    return $text;
}</code>
登入後複製

用這個函數處理一下你的第一行應該就好了。

想知道更多關於BOM的知識:
知乎 - “帶 BOM 的 UTF-8”和“無 BOM 的 UTF-8”有什麼區別
維基百科

相關標籤:
php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板