まずは効果を実証してください
txt のテキストを読むと、改行文字の存在により最後に 2 文字が追加されることがわかります。Windows の改行文字の表現方法は rn
です。たとえば、文字列を txt ファイルに書き込みます:
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str);
fclose($fp1);
----------------------------------------
表示結果:
123
---------------------------------------------------
次に、ファイルへの書き込みを 2 回テストします
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str.$str);
fclose($fp1);
---------------------------------------------------
表示結果:
123123
---------------------------------------------------
ここに書いたとき、123を書いた後に改行したい場合は、改行文字を追加する必要があります: rn
テストコード:
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."rn".$str."rn");
fclose($fp1);
-----------------------------------------------結果を表示
123
123
ここは空行の開始点です。見えませんが、ここをクリックして文字列を書き込むことができます。
---------------------------------------------------
テキスト ファイルを処理するとき、改行がある限り、改行文字が存在します。
そのため、文字列を 1 行使用する前にフィルタリングする必要があります。
テストコード:
次のようなファイル形式で読み取ります:
------------------------
123
1234
------------------------
ファイル
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."rn".$str."rn");
fclose($fp1);
$f1="t1.txt";
$fp1=fopen($f1,"r");
while(!feof($fp1)){
$buffer1=fgets($fp1);
エコー strlen($buffer1);
エコー "
";
}
fclose($fp1);
------------------------
表示される結果:
5
5
0
文字列 123 の長さは 3 ではなく 5 であることが証明されています。これは改行文字の存在が原因であり、読み取りに基づいて最後の 2 文字を削除できます。
コード:
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."rn".$str."rn");
fclose($fp1);
$f1="t1.txt";
$fp1=fopen($f1,"r");
while(!feof($fp1)){
$buffer1=fgets($fp1);
//最初の保守的な方法は、まずこの時点で取得された文字列の長さを計算し、次に最初の文字から最後から 2 番目の文字までをインターセプトして、必要な文字列を取得することです。
$buffer1_a=substr($buffer1,0,strlen($buffer1)-2);
// 2 番目の方法は、substr 関数の特殊性を直接使用して、0 から -2 までの文字列を直接インターセプトする方法です
$buffer1_b=substr($buffer1,0,-2);
}
fclose($fp1);
このようにして、コードを使用して目的の文字列を正常に読み取ることができます
cyuyan112233さんのコラムより抜粋