ホームページ  >  記事  >  バックエンド開発  >  PHP fgets 関数が余分なスペースを読み取って解決する

PHP fgets 関数が余分なスペースを読み取って解決する

WBOY
WBOYオリジナル
2016-07-29 09:16:151967ブラウズ

PHP が fgets を使用して文字列を読み取るとき、本来は新しい行に遭遇すると読み取りを停止しますが、実際には文字列の後にさらに多くのものを読み取るのが Windows の改行の原因である可能性があります。これが理由ですが、最終的には常にスペースが存在し、文字列を使用するときにエラーが発生します。

主に fgetc と case を使用して試してみたところ、文字列の末尾に 2 つの ascii 0 文字があることがわかりました。これら 2 つのことが原因で文字列の後ろにスペースができました。

while(!feof($myfile)) {
        $data1 = fgets($myfile);
        $i = strlen($data1);
        //str_replace(array('\n' ,'\r', '\n\r', ''), 'v', $data1);
        switch ($data1) {
             case 0:
                  # code...
             //echo 0;
                  break;
             case 10:
             echo 10;
             break;
             default:
                  # code...
             echo 11;
                  break;
        }
          
          echo $i;
          //$i++;
          echo "aa".$data1."aa";
          
          echo "<br>";
          echo "aa".substr($data1,0, $i-2)."aa";
          
          echo "<br>";
          
}

それでは、文字列インターセプト関数を使用して、最後の 2 文字を切り取ってください。

$i = strlen($data1);
echo "aa".substr($data1,0, $i-2)."aa";

このようにすると普通に読めますが、文字列の最後の行の後にスペースを入れる必要があります

著作権表示: この記事はブロガーによるオリジナル記事であり、許可なく転載することはできませんブロガーの。

以上、phpのfgets関数で余分なスペースを読み込んでしまう問題の解決方法を内容も含めて紹介しましたので、PHPチュートリアルに興味のある方の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。