Heim >Backend-Entwicklung >PHP-Tutorial >Wenn PHP eine TXT-Datei liest, erkennt die erste Zeile Zahlen immer nicht richtig. Was soll ich tun?

Wenn PHP eine TXT-Datei liest, erkennt die erste Zeile Zahlen immer nicht richtig. Was soll ich tun?

WBOY
WBOYOriginal
2016-12-01 01:27:201347Durchsuche

Ich lese den Inhalt einer TXT-Datei Zeile für Zeile.
Aber die erste Zeile jeder Datei wird immer nicht richtig erkannt.
Was soll ich tun?

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

Inhalt der TXT-Datei:

<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>

Jedes Mal, wenn ich es lese, ist die Länge der ersten Zahl in der ersten Zeile der Datei immer falsch. Es sollte eine unsichtbare Zeichenfolge sein..:

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

</code>

Antwortinhalt:

Ich lese den Inhalt einer TXT-Datei Zeile für Zeile.
Aber die erste Zeile jeder Datei wird immer nicht richtig erkannt.
Was soll ich tun?

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

Inhalt der TXT-Datei:

<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>

Jedes Mal, wenn ich es lese, ist die Länge der ersten Zahl in der ersten Zeile der Datei immer falsch. Es sollte eine unsichtbare Zeichenfolge sein..:

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

</code>

Es handelt sich höchstwahrscheinlich um ein UTF8-Bom-Zeichen.
Zitat SO So entfernen Sie mehrere UTF-8-Stücklistensequenzen

<code>//Remove UTF8 Bom

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

Verwenden Sie diese Funktion, um Ihre erste Zeile zu verarbeiten, und es sollte in Ordnung sein.

Möchten Sie mehr über BOM erfahren:
Zhihu – Was ist der Unterschied zwischen „UTF-8 mit BOM“ und „UTF-8 ohne BOM“
Wikipedia

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn