0
1

More than 1 year has passed since last update.

改行や空行を無視してテキストファイルを処理するには

Posted at

記事の目的

今回は、改行や空行を無視してテキストファイルを処理するということについて、インターン中にチームメンバーに対しての情報共有のため書いています。

共通のエラー

・なぜか入力した数値よりも先にFizzBazzが記入されてしまう
下記のコードが具体例です。これは処理後にFizzbazzが表示されてしまいます。

$str1 = "Fizz";
    $str2 = "Buzz";
    $num = $_POST["num"];
    $filename="mission_1-27.txt";
    $fp = fopen($filename,"a+");
    fwrite($fp, $num.PHP_EOL);
    fclose($fp);
    echo "書き込み成功!<br>";
    if(!empty($_POST["num"])||isset($_POST["num"])){
    if(file_exists($filename)){
        $numbers = file($filename,FILE_IGNORE_NEW_LINES);
           foreach($numbers as $num){
        if ((int)$num % 3 == 0 && (int)$num % 5 == 0) {
    echo $str1.$str2;
    echo "<br>";
    } else if((int)$num % 3 == 0){
        echo $str1;
        echo "<br>";
    } else if((int)$num % 5 == 0) {
        echo $str2;

エラーの原因

このエラーでは、txtファイル内の改行は無視して処理されているのですが、空文字は処理されてしまいます。
以下は上記のコードの一部分ですが、file()のところでフラグが改行についてしか指定されていないので、空文字はそのまま処理されてしまっていると思われます。

if(file_exists($filename)){
        $numbers = file($filename,FILE_IGNORE_NEW_LINES);
   ~
}

なのでフラグの指定について理解を深めましょう!
file()、フラグ指定などで検索してみてください!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1