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

WBOY
Freigeben: 2023-03-02 10:06:02
Original
1331 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage