Могу ли я прочитать файл .TXT с помощью PHP?

Когда я начинаю процесс написания своего сайта на 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. Но это на потом.

Спасибо!

 Eric25 мар. 2012 г., 18:13
«Да, я знаю, что здесь есть много вопросов о стекловом потоке о чтении файлов TXT, но когда я смотрю на каждый из них, они предназначены для C или C #, VB или Perl. Я начинаю думать, что PHP просто не может читать files :-( "Если вопрос не задан в StackOverflow, это также может указывать на то, что он довольно тривиален и находится в очевидном месте, например, в руководстве по языку программирования. :-)
 Fredashay25 мар. 2012 г., 21:24
Но я не хочу вставлять данные в мой скрипт. Я хочу, чтобы мои данные были в текстовом файле ... И, пожалуйста, пожалуйста, ПОЖАЛУЙСТА, полностью прочитайте мой вопрос, прежде чем дать мне сопливый ответ !!! У меня есть несколько книг по PHP, и ни одна из них не упоминает обработку файлов. Все они говорят об использовании PHP для веб-разработки и не упоминают обработку файлов.
 Eric25 мар. 2012 г., 18:10
Если вы запустите сценарий инициализации всего один раз, ваши данные должны быть в базе данных, и вам больше не нужно будет читать файлы, верно? Я также понимаю, что вы только начали программировать на PHP, вам следует подумать о добавлении в закладки этого замечательного ресурса:php.net/manual

Ответы на вопрос(6)

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

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

 $file = fopen("source/file.txt","r");
  if(!file)
    {
      echo("ERROR:cant open file");
    }
    else
    {
      $buff = fread ($file,filesize("source/file.txt"));
      print $buff;
    }
 Fredashay25 мар. 2012 г., 18:15
Почему ты не читаешь мой вопрос?
 Harry25 мар. 2012 г., 18:23
PHP может читать файлы, все, что вам нужно сделать, это использоватьfopen() а такжеfread(), что очень задокументировано на php.net

ИзРуководство по 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);
?>

РЕДАКТИРОВАТЬ за комментарий вы можете прочитать файл построчно с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);
}
?>
 Fredashay25 мар. 2012 г., 21:23
Да! Это именно то, что я хочу :-) Еще раз спасибо! Я хотел бы дать вам положительный отзыв, но я просто пион здесь :-(
 Fredashay25 мар. 2012 г., 18:11
Спасибо! Это близко к тому, что мне нужно. Но я бы предпочел прочитать каждую строку файла с отдельным чтением, чтобы я мог разобрать каждую строку отдельно с substr. Разобрать весь файл в одну большую длинную строку будет непросто.
 JKirchartz25 мар. 2012 г., 19:35
@Fredashay вы можете сделать это сfgetsЯ обновил свой ответ

что мне нужно, это краткий пример 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;
}

Вы хотите читать построчно? использование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);
}

так как вы спрашиваете о ресурсах по этому вопросу, в нем есть целая книга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);
?>
 Fredashay25 мар. 2012 г., 18:13
Спасибо! Это близко к тому, что мне нужно. Но я бы предпочел прочитать каждую строку файла с отдельным чтением, чтобы я мог разобрать каждую строку отдельно с substr. Разобрать весь файл в одну большую длинную строку будет непросто.

Ваш ответ на вопрос