>백엔드 개발 >PHP 튜토리얼 >PHP가 txt 파일을 읽을 때 첫 번째 줄에서 항상 숫자를 올바르게 인식하지 못합니다. 어떻게 해야 합니까?

PHP가 txt 파일을 읽을 때 첫 번째 줄에서 항상 숫자를 올바르게 인식하지 못합니다. 어떻게 해야 합니까?

WBOY
WBOY원래의
2016-12-01 01:27:201347검색

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 문자일 가능성이 높습니다.
여러 UTF-8 BOM 시퀀스를 제거하는 방법에 대한 인용문

<code>//Remove UTF8 Bom

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

이 기능을 사용하여 첫 번째 줄을 처리하면 괜찮을 것입니다.

BOM에 대해 더 알고 싶습니다:
Zhihu - "BOM이 있는 UTF-8"과 "BOM이 없는 UTF-8"의 차이점은 무엇입니까
Wikipedia

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.