Есть задача сохранить скрипт виджета вконтактека в БД и выводить виджет на сайте. Код (PHP): <script type="text/javascript" src="//vk.com/js/api/openapi.js?105"></script> <div id="vk_groups"></div> <script type="text/javascript"> VK.Widgets.Group("vk_groups", {mode: 0, width: "220", height: "400", color1: 'FFFFFF', color2: '2B587A', color3: '5B7FA6'}, 000000); </script> Для запись использую текстарею без фильтрации спецсимволов и т.п. Код (PHP): <textarea rows="10" style="width: 100%"name="top_banner" id="top_banner"><?php echo $options['top_banner']; ?></textarea> Вывожу тоже просто значение. Код (PHP): <?php echo $options['top_banner']; ?> Виджет выводится как надо, но вместе с ним и кусок JS как текст, что конечно же не нужно. Гуглю уже полдня, не нашел как сделать это правильно. Как правильно подобные скрипты писать в базу, как правильно их выводить? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
Сайт на вордпрессе и не мой. Я добавил опции, чтобы пользователь вставлял банеры всякие, виждеты сотсетей, рекламу, скорее всего разную, может удалять старую, добавлять новую и т.д. Затестил такой вариант без WP: Код (PHP): <?php $widget = "<script type=\"text/javascript\" src=\"//vk.com/js/api/openapi.js?121\"></script> <div id=\"vk_groups\"></div> <script type=\"text/javascript\"> VK.Widgets.Group(\"vk_groups\", {mode: 0, width: \"220\", height: \"400\", color1: 'FFFFFF', color2: '2B587A', color3: '5B7FA6'}, 72495085); </script>"; echo $widget; ?> и так JS скрипт как текст в браузер не выводится, всё норм. Да и wordpress в БД хранит этот скрипт в изначальном виде, т.е. просто echo этой опции должно нормально выводить виджет. Виджет то выводится нормально, но почему-то текст JS скрипта тоже выводится в браузер. Вот такая фигня http://prntscr.com/9undwu
Решено. А дело было в стилях. У блока, в котором лежит скрипт стиль .banner * {display:inline-block;} Вот <script> и стал блочным, хотя должен быть none по умолчанию.