Редактирование файлов в PHP - PullRequest
2 голосов
/ 14 февраля 2010

Есть ли способ добавить или удалить строку текста из файла, используя PHP.

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

Ответы [ 5 ]

2 голосов
/ 14 февраля 2010

Невозможно удалить строку из файла без предварительного разбора файла на строки и последующего его записи.

Вы можете добавить файл, используя fopen с $mode, установленным в 'a'

$fp = fopen('myfile', 'a');
2 голосов
/ 14 февраля 2010

Для добавления необходимо использовать fopen с $mode из a.

Смотрите, пожалуйста, , как удалить строку из файла.

1 голос
/ 14 февраля 2010

Да, вы можете открывать файлы в режиме добавления:

$fh = fopen('testFile.txt', 'a');

Если вы теперь пишете в файл, новый контент добавляется.

См. fopen и из этой документации:

'a' : открыто только для записи; поместите указатель файла в конец файла. Если файл не существует, попытайтесь создать его.

Однако удалить последнюю строку невозможно.

0 голосов
/ 15 февраля 2010

Работа с файлами в PHP полна ловушек, особенно в отношении параллелизма и блокировок. Тот факт, что вы пишете файлы конфигурации, подразумевает также, что вы выставляете задачи, обычно доступные только пользователю с привилегиями root через Интернет. Вы не упомянули эти вещи в своем посте, но ваш вопрос тривиален по сравнению с решением этих проблем.

Что касается вашего вопроса - хотя довольно просто реализовать то, что вы предлагаете (например, выполнив sed - хотя вы не сказали, на какой ОС это работает), я бы порекомендовал создать копию оригинального файла в некоторых другое представление - очевидными кандидатами будет база данных - где вы можете применить порядковые номера к строкам и легко создать пробел для заполнения, или PHP SplDoublyLinkedList, хранящийся в сеансе. Затем, как только пользователь внес столько изменений, сколько ему требуется, сгенерируйте файл за одну операцию из рабочего представления.

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

Имейте в виду, что вы делаете то же самое, что и большинство веб-скриптов php - за исключением того, что они манипулируют и перекодируют HTML, вы делаете это с другим типом файла - так что вы можете посмотреть, как другие Написаны системы шаблонов PHP, и подумайте, можете ли вы создать шаблон для ваших конфигурационных файлов.

НТН

С

0 голосов
/ 14 февраля 2010

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

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

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

...