Вопрос № 32564: В общем у меня такой вопрос, мне нужно изменять значения отдельных переменных в файле (образец ниже).
через fopen каждую строку тягать тяжко, может в php есть что нибудь вроде inifiles в delphi?
потеря комментов в принципе допустима, имена вс...Вопрос № 32604: Приветствую вас, уважаемые ЭКСПЕРТЫ!!
У меня такой вопрос:
Я сделал гостевую книгу. Она записывает все сообщения в MySQL. Как сделать, чтобы в выводимом сообщении тэги бы не работали?????
А то один ко мне тут зашёл.....Всё испаганил, м......
Вопрос № 32.564
В общем у меня такой вопрос, мне нужно изменять значения отдельных переменных в файле (образец ниже).
через fopen каждую строку тягать тяжко, может в php есть что нибудь вроде inifiles в delphi?
потеря комментов в принципе допустима, имена все понятные, да и файл вручную редактировать придется один раз, затем только автоматом.
Приложение:
Отправлен: 03.01.2006, 09:24
Вопрос задал: Alexkht (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Samum
Здравствуйте, Alexkht!
Вариантов, как всегда, несколько, весь вопрос в том, какой предпочесть.
1. Использовать стандартную функцию php parse_ini_file() для получения списка переменных и их значений. После этого изменить те переменные, которые в этом нуждаются и сохранить весь список в файл. Подробнее об этом можно почитать в руководстве или здесь: http://ru.php.net/manual/ru/function.parse-ini-file.php К тому же там можно найти полезные комментарии пользователей.
2. Второй вариант проще, хотя и требует некоторой "доработки" php, в частности, установленной Zend машины. Он основывается на использовании макросов PHP_INI_BEGIN(), PHP_INI_ENTRY() и PHP_INI_END(). Подробнее об этом можно ознакомиться по адресу http://ipm.kstu.ru/it/doc/php42/zend.ini-file-support.html
--------- Если бы программистам за их ошибки отрывали части тела, то в конце концов им пришлось бы использовать голову!
Ответ отправил: Samum (статус: Специалист)
Отправлен: 03.01.2006, 10:49 Оценка за ответ: 5 Комментарий оценки: спасибо буду переделывать
Отвечает: XMF
Здравствуйте, Alexkht!
--
я посоветовал бы создать собственный класс для такой работы...
Каждую строку можно загрузить в масив через file()
что-то отредактирвать в них, а потом перезаписать файл уже новыми строками.
Ну а чтобы прочитать ini-файл, существует функция parse_ini_file(str, bool), что ты наверное уже знаешь..
-=-=-
Ответ отправил: XMF (статус: 1-ый класс)
Отправлен: 03.01.2006, 15:11
Отвечает: Дмитрий Иванов
Здравствуйте, Alexkht!
а не проще ли сразу имплементировать этот файл с помощю require("твой_файл")
и затем спокойно использовать переменный?
--------- ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 04.01.2006, 02:41 Оценка за ответ: 4 Комментарий оценки: Вы не поверите, так и было сделано... но мне нужно изменять эти переменные...
Отвечает: Zysoftik
Здравствуйте, Alexkht!
Судя по всему, Вы используете формат записи ini-файла как у обычного скрипта.
Значит, Вы можете при зарузке Ваших скриптов использовать просто
include("filename.php");
а при сохранении, просто создайте ф-цию вида:
function IniSave($filename)
{
$f=fopen($filename,"w");
fwrite($f,"//######################MY INI FILE##############");
fwrite($f,"$ini_var1=".$ini_var1 \My Var");
...
fclose($f);
}
Таким образом, получится, что Вы просто каждый раз перезаписываете файл новыми значениями, а при загрузке Вы его просто подключаете.
Ответ отправил: Zysoftik (статус: 1-ый класс)
Отправлен: 04.01.2006, 10:32
Вопрос № 32.604
Приветствую вас, уважаемые ЭКСПЕРТЫ!!
У меня такой вопрос:
Я сделал гостевую книгу. Она записывает все сообщения в MySQL. Как сделать, чтобы в выводимом сообщении тэги бы не работали?????
А то один ко мне тут зашёл.....Всё испаганил, м...к. Все таблицы разъехались... Помоги пожалуйста...
Отправлен: 03.01.2006, 23:28
Вопрос задал: Stamm (статус: 9-ый класс)
Всего ответов: 7 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Doctor013
Здравствуйте, Stamm!
Есть несколько способов
Обработай сообщение strip_tags - это вырежет все hTML и PHP теги
Или обработай htmlspecialchars - это заменит все теги их HTML-сущностями, то есть '<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>'
--------- the non-fulfilment one's promise is a cause for someone's mistrust
Ответ отправил: Doctor013 (статус: 3-ий класс)
Отправлен: 03.01.2006, 23:54 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо
Отвечает: XMF
Здравствуйте, Stamm!
--
Если ты хочешь, чтобы были видны теги, используй:
$str=str_replace("&", "&", $str);
$str=str_replace("<", "<", $str);
--
Если нужно вырезать, то кажеться есть $str=strip_tags($str)
Ответ отправил: XMF (статус: 1-ый класс)
Отправлен: 04.01.2006, 01:08 Оценка за ответ: 5 Комментарий оценки: Предыдущий способ лучше. Но всё-равно спасибо...
Отвечает: Дмитрий Иванов
Здравствуйте, Stamm!
ты можешь использовать htmlspecialchars(string) - эта функция заменяет htmlые символы на их аналоги допустим < заменится на аналог замещения &..
Приложение:
--------- ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 04.01.2006, 02:46 Оценка за ответ: 5
Отвечает: Ерёмин Андрей
Здравствуйте, Stamm!
Для нужно заменить текст сообщения на строку, которая в html будет выглядеть точно также. Минимум - заменить < на <, а > - на >. Можно, конечно, сделать это вручную, через str_replace(), но есть специальная функция - htmlspecialchars():
$msg = htmlspecialchars($msg, ENT_QUOTES);
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 04.01.2006, 10:21 Оценка за ответ: 5
Очень удобная функция. Если ей передать только 1-й параметр, то все возможные теги будут вырезаны из текста.
Нужно просто добавить ее в выод подозреваемых на возможное наличие тегов полей БД. Т.е. написать что-то типа:
...
echo strip_tags($row[1])."
";
...
Ответ отправил: Zysoftik (статус: 1-ый класс)
Отправлен: 04.01.2006, 10:37
Отвечает: Константин
Здравствуйте, Stamm!
смотри функцию htmlspecialchars() и подобные. они заменяют < на < (less than) и > на > (greater than), которые отображаются броузером как меньше и больше и не влияют на форматирование
Ответ отправил: Константин (статус: 2-ой класс)
Отправлен: 04.01.2006, 17:09 Оценка за ответ: 5
Отвечает: Schmak
Здравствуйте, Stamm!
Можно попробовать сделать так:
while (strpos($str,'<')!=false)
{
$a=strpos($str,'<');
$b=strpos($str,'>');
$s=substr($str,$a,$b);
$str=str_replace($s,'',$str);
}
Этот код удаляет все, что похоже на html-теги (даже если там написан какой-то текст).
Еще вариант - использовать функцию htmlspecialchars($str), тогда все теги будут выведены как простой текст.
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Практикант)
Отправлен: 06.01.2006, 13:23