Bird
Raised Fist0
PHPprogramming~20 mins

Reading files (fread, fgets, file) in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
File Reading Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this PHP code using fread?

Consider this PHP code that reads from a file named example.txt containing the text Hello World!:

$file = fopen('example.txt', 'r');
$content = fread($file, 5);
fclose($file);
echo $content;

What will be printed?

PHP
$file = fopen('example.txt', 'r');
$content = fread($file, 5);
fclose($file);
echo $content;
AHello World
BHello World!
CHello
DWorld
Attempts:
2 left
💡 Hint

Remember, fread reads a specific number of bytes from the file.

❓ Predict Output
intermediate
2:00remaining
What does fgets() return when reading a file line?

Given a file data.txt with the content:

Line one
Line two
Line three

What will this PHP code output?

$file = fopen('data.txt', 'r');
$line = fgets($file);
fclose($file);
echo $line;
PHP
$file = fopen('data.txt', 'r');
$line = fgets($file);
fclose($file);
echo $line;
ALine one
BLine one\n
CLine one\r\n
DLine one\nLine two
Attempts:
2 left
💡 Hint

Check if fgets includes the newline character at the end of the line.

❓ Predict Output
advanced
2:00remaining
What is the output of reading a file with file() function?

Assume notes.txt contains:

First line
Second line
Third line

What will this PHP code output?

$lines = file('notes.txt');
echo count($lines);
PHP
$lines = file('notes.txt');
echo count($lines);
A3
B1
C0
DError
Attempts:
2 left
💡 Hint

The file() function reads the file into an array, one element per line.

❓ Predict Output
advanced
2:00remaining
What error does this PHP code raise when reading a non-existent file?

What happens when running this PHP code?

$file = fopen('missing.txt', 'r');
fgets($file);
PHP
$file = fopen('missing.txt', 'r');
fgets($file);
AWarning: fopen(): failed to open stream: No such file or directory
BFatal error: Call to undefined function fopen()
CNULL
DEmpty string
Attempts:
2 left
💡 Hint

Check what happens if you try to open a file that does not exist in read mode.

🧠 Conceptual
expert
3:00remaining
Which option correctly reads the entire file content into a string?

You want to read the entire content of story.txt into a single string variable in PHP. Which code snippet does this correctly?

A
$file = fopen('story.txt', 'r');
$content = '';
while (!feof($file)) {
  $content .= fgets($file);
}
fclose($file);
echo $content;
B
$content = file('story.txt');
echo $content;
C
$content = fread('story.txt');
echo $content;
D
$content = file_get_contents('story.txt');
echo $content;
Attempts:
2 left
💡 Hint

Look for the function that reads the whole file as a string in one call.

Practice

(1/5)
1. Which PHP function reads a file line by line, returning one line at a time?
easy
A. fopen()
B. fread()
C. file()
D. fgets()

Solution

  1. Step 1: Understand function behavior

    fgets() reads a file one line at a time, useful for line-by-line processing.
  2. Step 2: Compare with other functions

    fread() reads bytes, file() reads whole file into array, fopen() opens file but does not read.
  3. Final Answer:

    fgets() -> Option D
  4. Quick Check:

    Line-by-line reading = fgets() [OK]
Hint: fgets() reads one line at a time from a file [OK]
Common Mistakes:
  • Confusing fread() with fgets()
  • Thinking file() reads line by line
  • Using fopen() to read data directly
2. Which of the following is the correct syntax to read 100 bytes from a file pointer $fp using fread()?
easy
A. fread($fp);
B. fread(100, $fp);
C. fread($fp, 100);
D. fread(100);

Solution

  1. Step 1: Recall fread() parameter order

    fread() takes the file pointer first, then the number of bytes to read.
  2. Step 2: Validate syntax correctness

    Only fread($fp, 100); matches the correct order and required parameters.
  3. Final Answer:

    fread($fp, 100); -> Option C
  4. Quick Check:

    fread(fp, bytes) syntax = fread($fp, 100); [OK]
Hint: fread() needs file pointer first, then byte count [OK]
Common Mistakes:
  • Swapping parameters order
  • Omitting byte count
  • Passing only one argument
3. What will be the output of the following PHP code if the file data.txt contains:
Line1
Line2
Line3

Code:
$lines = file('data.txt');
echo trim($lines[1]);
medium
A. Line2
B. Line1
C. Line3
D. Error

Solution

  1. Step 1: Understand file() output

    file() reads the whole file into an array, each element is a line including newline.
  2. Step 2: Access second line and trim

    $lines[1] is the second line "Line2\n"; trim() removes newline, so output is "Line2".
  3. Final Answer:

    Line2 -> Option A
  4. Quick Check:

    file()[1] trimmed = Line2 [OK]
Hint: file() returns array of lines, index 1 is second line [OK]
Common Mistakes:
  • Confusing array index starting at 0
  • Not trimming newline characters
  • Expecting fread() output instead
4. Identify the error in this PHP code snippet that tries to read the first 10 bytes of a file:
$fp = fopen('file.txt', 'r');
$content = fread(10, $fp);
echo $content;
medium
A. fopen() mode should be 'rb' instead of 'r'
B. Parameters of fread() are reversed
C. fread() requires a third parameter
D. fopen() returns false, file not opened

Solution

  1. Step 1: Check fread() parameter order

    fread() expects file pointer first, then number of bytes. Here they are reversed.
  2. Step 2: Confirm other parts

    fopen('file.txt', 'r') is valid for reading text files; no third parameter needed; no info about fopen failure.
  3. Final Answer:

    Parameters of fread() are reversed -> Option B
  4. Quick Check:

    fread(fp, bytes) order matters [OK]
Hint: fread() needs file pointer first, then bytes [OK]
Common Mistakes:
  • Swapping fread() arguments
  • Assuming fopen() mode error without evidence
  • Expecting extra fread() parameters
5. You want to read a text file and print only the lines that contain the word "error" (case-insensitive). Which approach is best in PHP?
hard
A. Use fgets() in a loop, check each line with stripos()
B. Use fread() to read entire file as bytes, then search for "error"
C. Use file() to read all lines, then loop and check each line with stripos()
D. Use fopen() and print file pointer directly

Solution

  1. Step 1: Consider memory and line processing

    fgets() reads line by line, efficient for large files and allows checking each line.
  2. Step 2: Use stripos() for case-insensitive search

    Inside the loop, stripos() finds "error" ignoring case, so only matching lines are printed.
  3. Final Answer:

    Use fgets() in a loop, check each line with stripos() -> Option A
  4. Quick Check:

    Line-by-line read + case-insensitive check = fgets() + stripos() [OK]
Hint: Use fgets() loop with stripos() for line filtering [OK]
Common Mistakes:
  • Using fread() for line filtering
  • Reading whole file into memory unnecessarily
  • Printing file pointer instead of content
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard