- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Можно ли как то указать место где будет производиться запись в файле? Или замена одного "куска текста" на другой?
То есть:
- Указать ряд
- Или, возможно, при помощи регулярных выражений
:confused:
в чём вопрос?
1. то что надо записать видимо уже в строке
2. читаем файл в другую строку
3. делаем с этими строками то что и так как хотим
4. результат пишем в файл
проще процесс придумать сложно...
Буквально писать в произвольное место файла невозможно. Можно дописывать в конец, либо переписывать, создав заново. В любом языке. Если я правильно понял суть вопроса.
Писать в произвольное знакоместо позволяют только БД.
в чём вопрос?
1. то что надо записать видимо уже в строке
2. читаем файл в другую строку
3. делаем с этими строками то что и так как хотим
4. результат пишем в файл
проще процесс придумать сложно...
Спасибо! Сам не додумался:)
Буквально писать в произвольное место файла невозможно. Можно дописывать в конец, либо переписывать, создав заново. В любом языке. Если я правильно понял суть вопроса.
Писать в произвольное знакоместо позволяют только БД.
С какого такого перепугу-то? Вполне возможно.
file(), file_get_conetents() и file_put_contents() отнюдь не единственные функции для работы с файлами на php.
В том же php, например, используя fopen(), fseek(), fwrite() можно писать по произвольному смещению в файл. Только вот смещение надо будет считать самостоятельно - файл в этом случае представляется не как набор строк или символов, а как набор байтов.
В общем стоит почитать http://www.php.net/manual/en/ref.filesystem.php
2. читаем файл в другую строку
3. делаем с этими строками то что и так как хотим
4. результат пишем в файл
проще процесс придумать сложно...
Этот подход хорошо работает тогда, когда файл относительно небольшой, иначе это очень расточительно, и простота может выйти боком.
С какого такого перепугу-то? Вполне возможно.
file(), file_get_conetents() и file_put_contents() отнюдь не единственные функции для работы с файлами на php.
В том же php, например, используя fopen(), fseek(), fwrite() можно писать по произвольному смещению в файл. Только вот смещение надо будет считать самостоятельно - файл в этом случае
и? тогда процесс "вставить что то в середину файл" будет типа такого:
0. открыть поток fopen-ом
1. прочитать fread-ом в строку n байт начиная с начала файла
2. сдвинуться fseek-ом на k байт
3. прочитать fread-ом в строку всё до конца файла
5. поизвращаться со строками - получить строку-результат
4. сбросить rewind-ом позицию на начало
6. записать fwrite-ом из строки-результата новое содержимое файла
7. закрыть поток fclose-ом
в чём особый выигрыш? что не пишем в память старый вариант того, что меняем? это да, но обычно это доли процента от общего объёма.
если бы fwrite умел вставлять данные, а не тупо переписывать байт в байт эти игры имели бы смысл. а так - одно и то же как в самом простом варианте по сути...
Вопрос как звучал?
И вторая цитата:
Буквально писать в произвольное место файла невозможно. Можно дописывать в конец, либо переписывать, создав заново. В любом языке. Если я правильно понял суть вопроса.
Писать в произвольное знакоместо позволяют только БД.
На которую я и ответил.
Вы же вообще говорите про вставку фрагмента, а не его перезапись.
По поводу же вашего алгоритма - он совершенно не оптимален по тому же расходу памяти, как и тот, что вы описали постом выше.
Что вы будете делать, если размер файла больше размера памяти, которую может использовать скрипт? А это вполне решаемо, если правильно всё сделать.
bsyomov, увы, но это не так. Писать в произвольное место файла нельзя.
Почитайте примечания к функции fseek.
DiAksID это и пытался объяснить.