fputs и экранирование спецсимволов

deepslam

Новичок
fputs и экранирование спецсимволов

Всем привет!
Подскажите пожалуйста как можно решить проблему экранирования знаков типа ' при сохранении данных в файл?

На ru.php.net читал советы, но они не помогли, ни UTF8 , ничего.

У кого то была такая проблема?

Спасибо за ответы.
 

TutanXamoN

Новичок
А зачем их екранировать?
Если я не ошибаюсь запрещена двойная кавычка а обычная разрешена
 

deepslam

Новичок
Да, когда сохраняю.

Вот здесь http://ru2.php.net/manual/ru/function.fopen.php написано по этому поводу:

Note: Разные семейства операционных систем имеют разные соглашения относительно окончанийя строк. Когда вы пишете текст и хотите вставить разрыв строки, вы должны использовать правильный(-ые) символ(ы) для вашей операционной системы. Системы семейства Unix используют \n в качестве символа конца строки, системы семейства Windows используют \r\n в качестве символов окончания строки и системы семейства Macintosh используют \r в качестве символа конца строки.
Если вы используете неверный символ конца строки при редактировании файлов, вы можете обнаружить, что при открытии эти файлы "смешно выглядят".
Windows предлагает флаг режима текстовой трансляции ('t'), который автоматически переведёт \n во время работы с файлом. И наоборот - также вы можете использовать 'b' чтобы принудительно включить бинарный (двоичный) режим, в котором ваши данные не будут преобразовываться. Чтобы использовать эти режимы, укажите 'b' или 't' в качестве последней буквы параметра mode .
Так как установка флага трансляции по умолчанию зависит от SAPI и версии PHP, которую вы используете, рекомендуем явно задавать указанный флаг из соображений портируемости. Вы должны использовать режим 't' если вы работаете с текстовым файлом и использовать \n для разделения для обозначения конца строки в вашем скрипте, при этом не беспокоясь за читаемость ваших файлов в других приложениях типа "Блокнота". В противном случае вам следует использовать флаг 'b'.
Если вы явно не укажете флаг 'b' во время работы с бинарными файлами, вы можете столкнуться со странной порчей ваших данных, включая испорченные файлы изображений и странные проблемы с символами \r\n.
Gas
Перед сохранением ставил set_magic_quotes_runtime(0) , не помогает.
 

Gas

может по одной?
deepslam
я задал вопрос, который подразумевал описание проблеммы, а не односложное "да" - потому что, пока ничего не ясно.
Про magic_quotes_runtime пока забудь, я поторопился.
 

TutanXamoN

Новичок
deepslam
Думаю кто-то перечитал доков по базам данных и решил екранировать кавычки в файлах: приведу простой пример: как решаеться проблема екранирования кавычек и двойных кавычек в файах с расширением .php ?) (правильный ответ: никак - ибо проблемы нет)
 

Фанат

oncle terrible
Команда форума
deepslam
ну и где в этом тексте сказано что-то про экранирование знаков?
 

deepslam

Новичок
Начну по порядку.
Есть скрипт, он работает на Smarty.
Есть шаблон для Smarty , в нем есть строчка:
<a href="{$stat.url}" onmouseout="return nd();" onmouseover="overlib('{$stat.caption|replace:'"':''|replace:'\'':''|replace:'!':''|replace:'?':''}',BGCOLOR, '#FFFFCC', FGCOLOR, '#FFFFCC')">{$stat.caption|truncate:40:"..."}</a>
Далее...
Есть админка, в ней модуль редактирование шаблонов. Открываем шаблон, в котором эта строчка , меняем в шаблоне что то не принципиальное, например вместо e-mail пишем email , сохраняем шаблон...

Заходим в клиентскую часть и получаем ошибку Smarty, об ошибке синтаксиса.

Сейчас прочитал , что нужно открывать файл на запись, добавляя "b" , т.е. fopen("имя_файла","wb"); вроде помогло...
 

dimagolov

Новичок
deepslam, давай начнем с того, как шаблон отдается в админку, как он там правиться, как он потом возвращаеться на сервер ну и на сервере попадает в файл. с подробностями. потому что без этого понять в каком месте у тебя меняеться шаблон (кстати, неплохо сравнить оригинальный и исправленный шаблоны и посмотреть что же рельно меняеться) не представляеться возможным.
 
Сверху