В тексте страницы после редактирования FCKEditor прописана внешняя ссылка: <a href="http://www.sobor.by">...</a> или точнее c html-примитивами: <a href="http://www.sobor.by">...</a> а броузер выводит эту страничку с добавлением урл текущего сайта: http://www.mysait.by/"http://www.sobor.by" Страница естественно не находится. Если убрать ковычки: <a href=http://www.sobor.by>...</a> то всё нормально.Броузер не добавляет урл текущего сайта. Подскажите, как это побороть?
Извиняюсь! Тэг я просто пропустил, когда набирал свой пост. Сейчас вот исправил. Дело в том, что текст для странички вводится с помощью FCKEditor. С помощью FCKEditor генерятся и html-код ссылок вот такого вида: <a href="http://www.sobor.by">...</a> А браузер превращает их вот в такой: http://www.mysait.by/"http://www.sobor.by" Убирать после FCKEditor html-примитивы ковычек вот так: <a href=http://www.sobor.by>...</a> как-то сложновато, ведь в тексте может быть много внешних ссылок. Не знаю, что делать.
В редакторе FCKEditor есть кнопка "Источник", при нажатии на которую редактор переключается в режим исходного кода. Этот режим рекомендуется только для опытных пользователяй. Для работы с ним необходимы знания HTML и CSS. Но дело в том, что с админкой работают пользователи не имеющие представления об HTML. Им по силам освоить только кнопки редактора. Написать же регулярное выражение для устранения " (или примитива двойной кавычки " из тэга href= мне не по силам. Я так хорошо не знаю регулярных выражений. Может кто подскажет, как написать регулярку чтобы убрать " (или примитив двойной кавычки " только в тэге href= ???
Да точно так: при выводе контента должны быть не примитивы (по крайней мере в тэге href=), а спецсимволы. Спасибо всем, кто отозвался на мою проблему и участвовал в обсуждении. Проблема решена с помощью двух операторов: <code> 1. $nnews=str_replace('"','"',$row['nnews']); 2. $nnews=htmlspecialchars_decode($nnews, ENT_QUOTES); </code> Редактор CKeditor (раньше назывался FCKeditor) в конце сеанса редактирования заменяет двойную кавычку на примитив " Записываем в базу текст с примитивом двойной кавычки " Перед выводом контента извлекаем его из базы и заменяем примитив " на примитив " потому что функция htmlspecialchars_decode() распознаёт именно этот примитив. Далее применяем эту самую функцию htmlspecialchars_decode(), которая заменяет примитивы на спец.символы (" на двойную кавычку). Тогда браузер отображает всё как надо. Можно обойтись одним оператором и преобразовать только двойную кавычку, а остальные спец.символы оставить как примитивы: <code> 1. $nnews=.str_replace('"','"',$row['nnews']); </code> Но это как-то некрасиво и наверно чревато в дальнейшем неприятностями
скорее всего это делает не редактор, а функция, записывающая статью в бд. сам в обучающих целях пишу потихоньку цмс и этот редактор у меня подключен. пока ничего не делает, просто выводит набитый контент над собой. двойные кавычки остаются двойными кавычками, все работает правильно.