Как перезаписать переменные, находящиеся в файле

VANHALEN

Новичок
Здравствуйте! Очень очень хочется реализовать одну вещь.. Недавно, изобретая свой велосипед, написал замечательную (ну по моим представлениям функцию) для вывода умных мета тегов. Основанием для этого послужили не очень читаемые результаты в поисковиках. Вроде как "Главная", или "Портфолио" в результатах поиска, мало о чём говорит и езё меньше привлекает. Суть слудующая. Есть в админке вкладка "Настройки для поисковиков" для каждой страницы. Туда отдельно вбивается title, description и keywords. Если сайтом рулит блондинка секретарша, которая не понимает что это и не будет заполнять эту вкладку, то заголовки будут равны пункту меню, а ключевые слова и description, заранее определённым значениям по умолчанию. + В блоге и новостях заголовки будут равны заголовку самого материала (уж заголовок новости секретарша будет обязана заполнить).

Итак.. Прошу прощения у тех, кому предистория по барабану. Суть вопроса:
Ключевые слова и description по умолчанию, хочу тоже дать возможность менять из админки. Но создавать отдельную таблицу не хочу. (настраиваемые хранятся в тех же таблицах, которые всё равно читаются. Меню ведь все равно надо читать и сами материалы.) Хочу в файлик, чтобы не было лишнего обращения к БД. Смотрел и так и сяк функции работы с файлами. Ничего не понял. Полностью перезаписать содержимое файла - пожалуйста, дописать в началао, или в конец - пожалуйста. А можно поместить в файл переменную и менять только её? Вот пример.
PHP:
<?PHP
if (!is_writable("modules/settings.dat"))
	{
		echo '<div class="error">Файл с настройками защищён от записи.</div><br><br>';
	}
		else
	{
		include "modules/settings.dat";
	}
if (!isset($_GET['action'])) {$_GET['action'] = 'view';}
if ($_GET['action'] == 'view')
	{
		echo '
		<form action="?page='.$_GET['page'].'&action=update" method="post">
		<input type="text" name="description" value="'.$settings['description'].'"><br><br>
		<input type="text" name="keywords" value="'.$settings['keywords'].'"><br><br>
		<input type ="submit" value="Обновить">
		</form>';
	}
if ($_GET['action'] == 'update')
	{	
		echo 'Обновить значения переменных';
	}
?>
Собственно в самом файле переменные в массиве. Именно в массиве - чисто по наитию. Можно наверное было и просто писать $переменная = 'строковое значение';
PHP:
<?PHP
$settings = array(
'description' => 'Описание',
'keywords' => 'Ключевые слова',
);
?>
Ну вот.. Либо 3 строчки готового решения, либо ссылку, где человеческим языком про это почитать. Самому в голову приходит только вариант считать всё содержимое в переменную, считать значение переменной в массиве, а потом с помошью функций замены текста заменить значение одно в другом.
 

baev

‹°°¬•
Команда форума
VANHALEN, наймите программиста.

Тему переношу.
 

VANHALEN

Новичок
наймите программиста
Мда, как буд-то в соседних темах не подсказывают готовых решений? Или просить нельзя? Мне не нужен програмист, я хочу научиться сам
 

zerkms

TDD infected
Команда форума
я хочу научиться сам
считать всё содержимое в переменную, считать значение переменной в массиве, а потом с помошью функций замены текста заменить значение одно в другом.
Ну так алгоритм у вас есть уже - учитесь реализовывать. М?
 

VANHALEN

Новичок
Ну так алгоритм у вас есть уже - учитесь реализовывать. М?
Так что, неужели предположение алгоритма верное? Как то не верится. А как же делают гостевые книги например на файлах? Была у меня одна где-то такая. Старая правда как моя жизнь. Разобрать чтоли посмотреть. Или придётся вообще забить на идею и хранить в базе. Для скорости можно кешировать результат просто.
 

zerkms

TDD infected
Команда форума
VANHALEN
Ну вариантов не так много:
- прочитать весь файл в переменную, заменять подстроку в огромной переменной
- прочитать файл в массив. обойти массив, найти нужный элемент, заменить
- читать файл построково, ждать нужную строку, заменить
- использовать sed

Выбирай что больше нравится.

С условием, что у тебя там не миллион строк - все варианты равнозначны по скорострельности
 

fixxxer

К.О.
Партнер клуба
VANHALEN
Представь себе жесткий диск в виде большого набора магнитных ячеек с двумя состояниями намагничено/размагничено (0/1), где набор последовательных ячеек это файл

Станет все очевидно (например, что ты можешь заменить, а что - только перезаписать заново)
 

VANHALEN

Новичок
Представь себе жесткий диск в виде большого набора магнитных ячеек с двумя состояниями намагничено/размагничено (0/1), где набор последовательных ячеек это файл
Станет все очевидно (например, что ты можешь заменить, а что - только перезаписать заново)
Да сомо собой.. И с логикой всё в порядке.. Просто опыта решения подобных задач нет. Плюс ко всему, я никогда не работал с файлами на PHP, загрузка, удаление, переименование и уменьшение картинок не в счёт.
 

VANHALEN

Новичок
- прочитать весь файл в переменную, заменять подстроку в огромной переменной
Это как раз мой вариант - однозначно гнилой
- прочитать файл в массив. обойти массив, найти нужный элемент, заменить
Как раз то, что нужно, но для чего не хватает знаний о работе с массивами
- читать файл построково, ждать нужную строку, заменить
Тоже шняга
- использовать sed
Вообще не знаю что это такое и чем едят.

Вывод - пошёл учиться...
 
Сверху