Чтение только одной строки php

Чтение txt файла, при каждом выполнении скрипта читает только по одной строке

Приветствую!
В скрипте есть переменная $link сейчас в ней содержится только одна ссылка, также есть тектовый файл link.txt в нем много ссылок и каждая с новой строки, нужно чтобы
при каждом выполнении этого скрипта брало только по одной ссылке и передавало в переменную $link, а при следующем выполнении брало следующую ссылку и отправлято в переменную $link и так до тех пор пока не дойдет до последней ссылки, после чего при при попытке выполнения скрипта уже ничего не передавало в переменную $link

Как мне такое реализивоть, наверное нужен счетчик строк чтобы скрипт понимал с какой строки ему следующий рас стартовать и понимал что уже он прошел во всем ссылкам и после передачи последней ссылки больше ничего не передавал в переменную $link

Как прочитать текстовик, то понятно, а с остальным трудности.
Сам скрипт лежит в корне сайта вместе с link.txt
$link = file(«link.txt»);

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
 ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $group_id = '52069'; $access_token = '75756dfg765df7gdfg978417a9a45505f7c513076e576da2d432177ba633773e73cc'; $link = 'https://link.com/4.php'; // Отправляем сообщение. $params = array( 'v' => '5.70', 'access_token' => $access_token, 'to_id' => '-' . $group_id, 'from_group' => '1', 'attachments' => $link ); file_get_contents('https://api.vk.com/method/wall.post?' . http_build_query($params)); ?>

Источник

Как открыть файл со строки X до строки Y в PHP

Необходимость прочитать только определённые строки в файле является вполне практической задачей. К примеру, однажды мне нужно было из множества однотипных HTML файлов прочитать всё, кроме заголовков. Строки в файлы были с разным содержимым и разной длинны, но шапка всегда включала одинаковое количество строк. Т.е. мне нужно было начать читать файл, к примеру, с 16й строки и считывать его до конца (последние два закрывающихся тэга и я просто отфильтровывал).

Часто для открытия файлов используют функцию fread(), она позволяет указывать количество считываемой информации, но для ситуации, когда строки произвольной длинны, эта функция бесполезна.

Тем не менее, задача легко решается с помощью SplFileObject::seek

$file = new SplFileObject('filename.txt'); $file->seek(1000); for($i = 0; !$file->eof() && $i < 500; $i++) < echo $file->current(); $file->next(); >

В приведённом выше коде из файла filename.txt будет считано 500 строк начиная с тысячи первой строки. Если вам нужно, чтобы файл начал считываться с тысячной строки и до конца, то код будет выглядеть так:

$file = new SplFileObject('filename.txt'); $file->seek(1000); for($i = 0; !$file->eof(); $i++) < echo $file->current(); $file->next(); >

Этот метод из интерфейса SeekableIterator не надо его путать с fseek.

И поскольку SplFileObject является итерируемым (повторяющимся), вы можете ускорить его с LimitIterator:

$file = new SplFileObject(‘longFile.txt’); $fileIterator = new LimitIterator($file, 1000, 2000); foreach($fileIterator as $line)

Как и предыдущий пример, в этом отсчёт начинается с нуля, поэтому будут считаны строки с 1001 по 2001.

Связанные статьи:

Источник

PHP: чтение определенной строки из файла

Чтение всего файла в память только для того, чтобы получить вторую строку? Я бы сказал, что в некоторых обстоятельствах это может привести к катастрофе (см. Комментарий Raptor).

Технически правильное, но вряд ли оптимальное решение, особенно когда вы сталкиваетесь с тем, что вы имеете дело с файлами, потенциально длиной в миллионы строк.

Если вы хотите сделать это таким образом.

$line = 0; while (($buffer = fgets($fh)) !== FALSE) < if ($line == 1) < // This is the second line. break; >$line++; > 

В качестве альтернативы откройте его file() и подстройте строку с помощью [1] .

omg Мне не хватает 7 представителей, чтобы комментировать. Это комментарий @Raptor и @Tomm, так как этот вопрос по-прежнему обнаруживает высокий уровень в google-серпах.

Он точно прав. Для небольших файлов file($file); отлично. Для больших файлов это полный избыток b/c php-массивов питает память, как сумасшедшую.

Я просто провел крошечный тест с *.csv с размером файла ~ 67 мб (1 000 000 строк):

$t = -microtime(1); $file = '../data/1000k.csv'; $lines = file($file); echo $lines[999999] ."\n".(memory_get_peak_usage(1)/1024/1024) ."\n".($t+microtime(1)); //227.5 //0.22701287269592 //Process finished with exit code 0 

И поскольку никто еще не упомянул об этом, я дал попытку SplFileObject , которую я на самом деле недавно открыл для себя.

$t = -microtime(1); $file = '../data/1000k.csv'; $spl = new SplFileObject($file); $spl->seek(999999); echo $spl->current() ."\n".(memory_get_peak_usage(1)/1024/1024) ."\n".($t+microtime(1)); //0.5 //0.11500692367554 //Process finished with exit code 0 

Это было на моем рабочем столе Win7, поэтому оно не было репрезентативным для производственной среды, но все же. в значительной степени разница.

Источник

чтение с определенной строки и вывод на экран

Чтение 10 строки со всех файлов *.log и вывод на экран в сообщении их
Доброго времени суток! Прошу помощи в написании скрипта. В папке лежат файлы с расширением *.log.

Console.Writeline — вывод строки определенной до определенной длины спереходом на новую строку
Добрый день. Существуют разные флаги для Console.Writeline. Например вот такой способ: .

Чтение определённой строки.
Тема такая, программа принимает два аргумента — первый путь к файлу, второй — любую строку (str1).

Чтение из файла определенной строки
Доброго времени суток. Передо мной встала задача, прочитать определённую строку из текстового.

читать по строкам файл, считать их, и после нужной строки уже делать что там нужно.
В пхп есть множество способов как прочесть строку/строки, например, https://secure.php.net/manual/ru/function.file.php

ЦитатаСообщение от MihaelK Посмотреть сообщение

читать по строкам файл, считать их, и после нужной строки уже делать что там нужно.
В пхп есть множество способов как прочесть строку/строки, например, https://secure.php.net/manual/ru/function.file.php

круто , а как вывести с указанной строки?
к примеру есть файл на 100 строк, нужно вывести с 20, как это сделать?

Добавлено через 28 минут

$data = file_get_contents("people.txt"); //read the file $convert = explode("\r\n", $data); //create array separate by new line for ($i=15;$icount($convert);$i++) { echo $convert[$i]. "
"
; //write value by index }

ЦитатаСообщение от MihaelK Посмотреть сообщение

читать по строкам файл, считать их, и после нужной строки уже делать что там нужно.
В пхп есть множество способов как прочесть строку/строки, например, https://secure.php.net/manual/ru/function.file.php

Добавлено через 39 минут
вроде понял))
может кому-то понадобиться чтение из определенной строки / с указанной строки и вывод на экран

до определенного элемента

$data = file_get_contents("people.txt"); //read the file $convert = explode("\r\n", $data); //create array separate by new line for ($i=2; $icount($convert)&& $i  20; $i++) { echo $convert[$i]. "
"
; //write value by index }

Источник

Чтение и запись данных в файле

При изучении данной темы нужно учитывать, что для обращенияк файлу одни функции используют дескриптор файла, а другие путь к файлу. Для получения дескриптора нужно открыть файл. Это рассматривалось в предыдущей теме.

Чтение из файла

Функцию fread() можно использовать для получения определённого количества данных из файла.

длина — размер данных в байтах

Если конец файла будет достигнут раньше, чем функция прочитает указанный размер данных, то она вернёт строку меньшего размера. Данную функцию удобно применять для чтения бинарных файлов.

При указании длины строки и при перемещении указателя нужно учитывать, что русские буквы имеют размер не один байт, а больше. Подробнее об этом сказано в теме «Работа со строками». Также не забудте, что в начале файла в кодировке UTF-8 есть несколько байт. В кодировке UTF-8 без BOM эти байты отсутствуют.

Прочитаем перыве 10 байт из файла myfile.txt. Откроем его в режиме ‘r+’. Указатель будет находится в начале.

$file = fopen('myfile.txt', 'r+'); $take = fread($file, 10); echo $take;

Если в файле присутствуют русские буквы, то последняя буква может отображаться неправильно. Это происходит потому, что символ имеет размер больше одного байта и одна часть прочитана, а вторая нет.

Функция fgets() возвращает одну строку, начиная от указателя до конца строки.

длина — позволяет указать максимальный размер строки в байтах. Необязательный параметр.

Запуск функции в цикле позволяет произвести чтение файла построчно.

Прочитаем одну строку строку из файла myfile.txt. Так как указатель уже перемещён, то будет прочитана не вся строка, а от указателя.

$take = fgets($file); echo '
'.$take;

Функция fgetss() также возвращает одну строку, но удаляет из неё HTML теги. Если в коде присутствует PHP скрипт, то он тоже будет удалён.

fgetss (файл, длина, нужные тэги)

длина — размер строки в байтах. Необязательный параметр.

нужные теги — позволяет указать тэги, которые не будут удалены.

Существует функция fgetc() , которая возвращает один символ из файла.

Функция file() читает весь файл и помещает данные в массив. Каждая строка помещается в элемент массива. Для работы этой функции не требуется открывать файл. Расположение указателя не учитывается.

file (путь к файлу, флаги, контекст)

путь к файлу — абсолютный или относительный путь к файлу

флаги — флаги, определяющие работу функции. Необязательный параметр.

Можно указать такие флаги:

FILE_USE_INCLUDE_PATH — позволяет искать файл в папках include path.

FILE_IGNORE_NEW_LINES — удаляет символ конца строки. Если этот флаг не установлен, то в каждой строке будет символ конца строки.

FILE_SKIP_EMPTY_LINES — не добавляет в массив пустые строки.

Если указывается несколько флагов, то они разделяются оператором «|».

контекст — позволяет указать ресурс контекста

Выведем файл myfile.txt на страницу.

$ar = file('myfile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); echo '
'; print_r($ar);

Запись в файл

Функция fwrite() записывает данные в файл.

данные — данные, которые записываются

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

Если указатель находится в начале или середине файла, функция заменяет символы, находящиеся в файле, на новые. То есть, если записывается 5 символов, то из файла удаляются 5 символов и на их место добавляются новые.

Когда вы записываете русские буквы, то кодировка скрипта должна соответствовать кодировке файла.

Запишем в файл строку «текст из скрипта». В нашем примере дескрептор находится в середине файла и строка запишется туда. Когда нужно добавить данные в конец файла, то его можно открыть в режиме ‘a’. А когда нужно перезаписать файл, его открывают в режиме ‘w’. Мы не будем передвигать указатель, запишем данные туда, где он находится.

$text = 'текст из скрипта'; fwrite($file, $text);

Коприрование материалов сайта возможно только с согласия администрации

2017 — 2023 © basecourse.ru Все права защищены

Источник

Читайте также:  Тест
Оцените статью