php : 文字列を指定した文字数に分割。

パターン1:連想配列化して、同じ文字列があるか判断する
$winner = "D";
    $STR = "";
    //全ての入力される文字を1つの文字列にする。
    for($i = 0; $i < 5; $i++) {
        $STR .= trim(fgets(STDIN));
    }
    $length = 5;
    // $STR文字列を$length文字数に分割して、配列化する。
    $board = str_split($STR, $length);
    // 配列$result は、キーをインデックス番号にもち、欲しかった5文字1列の2次元配列を作成。
    // print $board;
    
    // 横の調べ
    for($i = 0; $i < 5; $i++) {
        if($board[$i] === "OOOOO") {
            $winner = "O";
            break;
        } elseif($board[$i] === "XXXXX") {
            $winner = "X";
            break;
        }
    }
    
    // 縦
    for($col = 0; $col < 5; $col++) {
        $string = "";
        for ($row = 0; $row < 5; $row++) {
            $string .= $board[$row][$col];
        }
        if(strpos($string, "OOOOO") !== false) {
            $winner = "O";
            break;
        } elseif(strpos($string, "XXXXX") !== false) {
            $winner = "X";
            break;
        }
    }
    
    //斜め (左上から、右下にかけて)
    $string = "";
    for($i = 0; $i < 5; $i++) {
        $string .= $board[$i][$i];
    }
    if(strpos($string, "OOOOO") !== false) {
        $winner = "O";
    } elseif(strpos($string, "XXXXX") !== false) {
        $winner = "X";
    }
    
    //斜め (右上から、左下にかけて)
    $string = "";
    for($i = 0; $i < 5; $i++) {
        $string .= $board[$i][4 - $i];
    }
    if(strpos($string, "OOOOO") !== false) {
        $winner = "O";
    } elseif(strpos($string, "XXXXX") !== false) {
        $winner = "X";
    }
    print $winner;

or

パターン2:○か✖ をカウントして、判断する
$board = [];

for ($i = 0; $i < 5; $i++) {
    $board[$i] = trim(fgets(STDIN));
}

// 横
for ($i = 0; $i < 5; $i++) {
    if ($board[$i] === 'OOOOO') {
        print 'O' . "\n";
        return;
    } elseif ($board[$i] === 'XXXXX') {
        print 'X' . "\n";
        return;
    }
}

// 縦 1 列に揃う場合
for ($i = 0; $i < 5; $i++) {
    $o = $x = 0;

    for ($j = 0; $j < 5; $j++) {
        if ($board[$j][$i] === 'O') {
            $o++;
        } elseif ($board[$j][$i] === 'X') {
            $x++;
        }
    }

    if ($o === 5) {
        print 'O';
        break;
    } elseif ($x === 5) {
        print 'X';
        break;
    }
}

// 斜め (左上から右下)
$o = $x = 0;
for ($i = 0; $i < 5; $i++) {
    if ($board[$i][$i] === 'O') {
        $o++;
    } elseif ($board[$i][$i] === 'X') {
        $x++;
    }
}

if ($o === 5) {
    print 'O';
    return;
} elseif ($x === 5) {
    print 'X';
    return;
}

// 斜め (右上から左下)
$o = $x = 0;
for ($i = 0; $i < 5; $i++) {
    if ($board[$i][4 - $i] === 'O') {
        $o++;
    } elseif ($board[$i][4 - $i] === 'X') {
        $x++;
    }
}

if ($o === 5) {
    print 'O';
    return;
} elseif ($x === 5) {
    print 'X';
    return;
}

print 'D';