Могу ли я прочитать файл .TXT с помощью PHP? - PullRequest
10 голосов
/ 25 марта 2012

Когда я начинаю процесс написания своего сайта на PHP и MySQL, одним из первых написанных мной PHP-скриптов является скрипт для инициализации моей базы данных. Удалить / создать базу данных. Удалите / создайте каждую из таблиц. Затем загрузите таблицы из литералов в сценарии.

Это все работает нормально! Ухххх: -)

Но я бы предпочел читать данные из файлов, а не жестко кодировать их в скрипте PHP.

У меня есть пара книг по PHP, но все они ориентированы на веб-разработку с использованием MySQL. Я не могу найти ничего о чтении и записи в обычные файлы.

Да, я знаю, что здесь есть много вопросов о стеке стека о чтении TXT-файлов, но когда я смотрю на каждый из них, они относятся к C или C #, VB или Perl. Я начинаю думать, что PHP просто не может читать файлы: - (

Все, что мне нужно, это краткий пример PHP, как открыть файл TXT на сервере, последовательно прочитать его, отобразить данные на экране и закрыть файл, как в этом псевдокоде:

program readfile;
handle = open('myfile.txt');
data = read (handle);
while (not eof (handle)) begin
    display data;
    data = read (handle);
    end;
close (handle);
end;     

Мне также нужно будет записывать файлы на сервер, когда я попаду на ту часть моего сайта, где люди загружают аватары, и сохраняют их в виде файлов JPG или GIF. Но это на потом.

Спасибо!

Ответы [ 6 ]

23 голосов
/ 25 марта 2012

Из инструкции PHP для fread():

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

EDIT за комментарий вы можете читать файл построчно с fgets()

<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        echo $buffer;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
?>
7 голосов
/ 28 марта 2012

Все, что мне нужно, это краткий пример PHP, как открыть файл TXT на сервере, последовательно прочитать его, отобразить данные на экране и закрыть файл, как в этом псевдокоде:

echo file_get_contents('/path/to/file.txt');

Да, вкратце, смотрите file_get_contents, вам обычно не нужен цикл:

$file = new SPLFileObject('/path/to/file.txt');
foreach($file as $line) {
    echo $line;
}
3 голосов
/ 25 марта 2012

Ну, так как вы спрашиваете о ресурсах по этой теме, есть целая книга в PHP.net документах .

Базовый пример:

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
2 голосов
/ 25 марта 2012

Почему вы не читаете документацию php о fopen

 $file = fopen("source/file.txt","r");
  if(!file)
    {
      echo("ERROR:cant open file");
    }
    else
    {
      $buff = fread ($file,filesize("source/file.txt"));
      print $buff;
    }
1 голос
/ 25 марта 2012

file_get_contents делает все это за вас и возвращает текстовый файл в виде строки:)

0 голосов
/ 25 марта 2012

Вы хотите читать построчно? Используйте fgets .

$handle = @fopen("myfile.txt", "r");
if ($handle) {
    while (($content = fgets($handle, 4096)) !== false) {
        //echo $content;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...