Как редактировать определенную строку?

116
26 января 2020, 05:30
    <?PHP   if(isset($_POST['content']))   {
        $fd = @fopen($_POST['filename'],"w");
        if(!$fd) exit("Такой файл отсутствует");
        fwrite($fd,stripslashes($_POST['content']));
        fclose($fd);
        $_GET['filename'] = $_POST['filename'];   } ?> <form method="get"> <input type="text" name="filename" value=<?PHP echo $_GET['filename']; ?>><br> <input type="submit" value="Редактировать">
</form> 
<?PHP   // Если в строке зароса передано имя   // файла - открываем его для редактирования   
if(isset($_GET['filename']))   {
        $fd = @fopen($_GET['filename'],"r");
        if(!$fd) exit("Такой файл отсутствует");
        $bufer = fread($fd,filesize($_GET['filename']));
        fclose($fd);
        ?>
          <form  method="post">
            <textarea cols=76 rows=10 name="content"><?PHP echo $bufer; ?></textarea><br>
            <input type="hidden" name="filename" value='<?PHP echo $_GET['filename']; ?>'>
            <input type="submit" name="edit" value="Редактировать">
          </form>
        <?PHP   } ?>

С помощью данного кода открываю файл для редактирования, но файл очень большой, и не удобно искать 1 строку для редактирования.Как открыть определенную строку для редактирования например за id?

    <div id='1'>Текст</div>
    <div id='2'>Текст</div>
    <div id='3'>Текст</div>
Answer 1

Для того, чтобы прочитать определенную строку из файла, придется прочитать все строки перед ней. Объяснение очень простое - никто заранее не знает, с какой именно позиции файла начинается ваша запрошенная строка - поэтому придется читать по одной и отбрасывать ненужные.

Чуть подправленный пример из документации по fgets

$index = 23;
$handle = fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    for ($i = 0; $i < $index; $i++) {
        $buffer = fgets($handle, 4096));
        if ($buffer === false) {
            die('Строка с таким номером отсутствует в файле');
        }
    }
    fclose($handle);
    echo "Строка $i: $buffer";
}

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

READ ALSO
Сортировка даты в Yii2

Сортировка даты в Yii2

Как можно отсортировать ActiveRecord по полю date, что бы отсортировать от самых близких датКак в этом запросе, но неподходящие записи выводить в конец...

114
Что работает быстрее? fgetcsv или (fgets + explode) или (fgets + str_getcsv)

Что работает быстрее? fgetcsv или (fgets + explode) или (fgets + str_getcsv)

Иногда в csv файле у описаний полей, и/или у данных, может быть 1 лишний разделитель (в нашем случае ;)

138
PHP вывод содержимое папки с аудио

PHP вывод содержимое папки с аудио

Не являюсь знатоком РНР, но появилась нужда кое-что делать\ asterisk под управлением freepbx записывает разговоры

91
Правильная разработка веб-сайта

Правильная разработка веб-сайта

Всем доброго времени сутокМного уже поработал с различными api

110