Здравствуйте.
Задался вопросом написания небольшого скрипта, который позволяет редактировать другие скрипты прямо из браузера.
Ну то есть, например, в запароленной части сайта валяется какой-нибудь editor.php, в котором можно загрузить в текстовое поле (textarea) код любого другого файла с сайта, отредактировать его и сохранить.
Сразу же столкнулся с, по-моему, извечной проблемой всяких кавычек и бэк-слешей.
Раньше когда писал всякие обработчики форм (какой-нибудь гостевой книги, например) то всё было достаточно просто - в одном скрипте кавычки бэк-слешатся, сохраняются в файл или базу в таком виде, а при выводе на экран - переводятся обратно в нормальный режим.
Но тут речь о коде, в котором файл нужно сохранить именно таким, какой он был введен в текстовом поле. То есть, одинарные и двойные кавычки после сохранения файла через пхп-скрипт должны остаться именно таковыми, а бэк-слеши в тексте кода - не должны стать двойными.
И с другой стороны - если в коде осмысленно используется конструкция типа \" или \' - то она должна остаться именно такой, а не заменяться на всякие бэк-слешнутые
И, самое главное, что делать с \n? В смысле, если в коде используется \n как часть самого кода.
Ведь собственно переносы строк (в конце каждой строчки текста) мне тоже нужны, т.к. это дело переносится в файл, и если потом этот файл загрузить в текстовое поле, то без переносов не обойтись.
Если я сначала сделаю str_replace всех двойных бэк-слешей \\ на одинарные \, то в тексте появятся дополнительные переводы на новую строку, а мне они нужны при записи в файл (лучшего варианта записи я не придумал, чем если сначала разбить переданную переменную на строчки explode'ом по \n, а потом построчно вставлять в файл).
Если же я сначала разобью строку explode'ом, то всё равно конструкция \\n, переданная скрипту, воспримется как перевод на новую строку и поучаствует в разбиении.
Вот сам код который у меня сохраняет в файл:
1. qte - 01 Сентября, 2011 - 09:55:41 - перейти к сообщению
А теперь представьте, что я через свой скрипт редактирую сам же этот код. Получится полная фигня с теми его частями где осмысленно используются конструкции \" \' \n
Как правильно обработать всю эту ерунду? Ведь даже вот тут на форуме эта задача решена - в сообщении можно использовать код без потери его смысла.
Также, возможно, кто-нибудь предложит более элегантный способ сохранить введенный текст в файл?