Search code examples
phptextstr-replacefgets

including leading whitespaces when using fgets in php


I am using PHP to read a simple text file with the fgets() command:

$file = fopen("filename.txt", "r") or exit('oops');
$data = "";

while(!feof($file)) {
    $data .= fgets($file) . '<br>';
}

fclose($file);

The text file has leading white spaces before the first character of each line. The fgets() is not grabbing the white spaces. Any idea why? I made sure not to use trim() on the variable. I tried this, but the leading white spaces still don't appear:

$data = str_replace(" ", "&nbsp;", $data);

Not sure where to go from here.

Thanks in advance,

Doug

UPDATE:

The text appears correctly if I dump it into a textarea but not if I ECHO it to the webpage.


Solution

  • Function fgets() grabs the whitespaces. I don't know what you are exactly doing with the $data variable, but if you simply display it on a HTML page then you won't see whitespaces. It's because HTML strips all whitespaces. Try this code to read and show your file content:

    $file = fopen('file.txt', 'r') or exit('error'); 
    $data = '';
    
    while(!feof($file)) 
    {
        $data .= '<pre>' . fgets($file) . '</pre><br>'; 
    }
    
    fclose($file);
    
    echo $data;
    

    The PRE tag allows you to display $data without parsing it.