|
|
|
| Вобщем дело обстоит так, возможно я туплю но хз как сделать, надеюсь все знакомы с wysivig расширением для текстовых полей.
Так вот, самописная CMS
Моделируем ситуацию : Админ хочет добавить статью, прежде нунжно загрузить на сервер изображения, есть форма для загрузки, и когда изображения загружены программа дает админу исходный код фоток которые впоследствии он добавит в статью в то место где ему приспичило всунуть фоту
Код выглядит примерно так - <всякие левые html тэги><img src="имя фотки"></всякие левые html тэги>
Но!! наш веселый wysivig делает все через одно место место и в базе данных вместо вышеуказанного чудесного кода мы видим кучу амперсандов, проблема собственно в том чтобы вернуть коду исходный вид,
Могу обьяснить проще
$text = "<img src="img.jpg">";
$text = htmlspecialchars($text);
$text = htmlspecialchars($text);
echo $text = //куча амперсандов
нужно вернуть переменной первоначальное значение до обработки )
кто хочет предложить отказаться от Wysivig, дам асю заказчика и втирайте ему)) | |
|
|
|
|
|
|
|
для: Синигами
(08.11.2009 в 18:22)
| | А зачем отдавать фото, чтобы получить что-то "волшебное", разве нельзя указать изображения сразу в тексте, причем ВВ-кодом? При сохранении чего-то там, и при наличии вставки изображений, можно указать реальные имена и пути на сервере. | |
|
|
|
|
|
|
|
для: sim5
(08.11.2009 в 19:00)
| | Я так понимаю, что последний абзац тредстартер написал как раз в расчете на такие предложения :)) | |
|
|
|
|
|
|
|
для: Trianon
(08.11.2009 в 21:13)
| | Я этот абзац даже и не читал )), прочитал сразу о "волшебном коде для клиента", улыбнулся и стал писать ответ. | |
|
|
|
|
|
|
|
для: Синигами
(08.11.2009 в 18:22)
| | >$text = "<img src="img.jpg">";
>$text = htmlspecialchars($text);
>$text = htmlspecialchars($text);
>
>echo $text = //куча амперсандов
Так вроде функция htmlspecialchars как раз и делает, чтобы превратить тэги в их коды, на тот случай если кому то приспичит написать например скрипт в форме)
Мне кажется можно убрать эту функцию. У меня почти такая же ситуация была, я просто скопипастил js - код с этого сайта (когда пишешь сообщение, сбоку есть
Используйте тэги для выделения текста:
Код:
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url])
только я сделал, чтоб он добавлял не такие [b] а такие <b> теги в текст. И всё вроде работает, конечно тут надо предупредить админа не писать в тексте < или >, так как это приведёт скорее всего к полному отстою на сайте)) | |
|
|
|
|
|
|
|
для: sasha1133
(08.11.2009 в 19:43)
| | >Так вроде функция htmlspecialchars как раз и делает, чтобы превратить тэги в их коды
Это где вы такое вычитали? htmlspecialchars, читайте мануал и не городите отсебятины.
Добавить нужно ВВ-тег [img][/img], который обрабатывается рег.выражением (как впрочем и все остальные), и с помощью JS у клиента, вставлять этот тег в текс, подставляя в него в качестве значения значение атрибута value поля file. На сервере же заменить это значение на сформированное имя при удачной загрузки изображения. Не надо "волшебства", оно излишнее. | |
|
|
|
|
|
|
|
для: sim5
(08.11.2009 в 19:59)
| | Дак там вроде и написано:
Производятся следующие преобразования:
'&' (амперсанд) преобразуется в '&'
'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.
''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
'<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>'
|
| |
|
|
|
|
|
|
|
для: tvv123456
(08.11.2009 в 21:17)
| | Я говорил о ВВ-тегах, это первое. Поэтому ответ автороа "Так вроде функция htmlspecialchars как раз и делает, чтобы превратить тэги в их коды", звучит несколько странно. Ну и второе - эта функция не преобразует "в коды", она конвертирует специальные символы в мнемоники HTML. | |
|
|
|
|
|
|
|
для: Синигами
(08.11.2009 в 18:22)
| | Смущает вот это:
<?
$text = htmlspecialchars($text);
$text = htmlspecialchars($text);
|
Почему два раза? Двойное преобразование может оказаться необратимым. А вообще для таких казусных ситуаций есть функция htmlspecialchars-decode() | |
|
|
|
|
|
|
|
для: Николай2357
(09.11.2009 в 01:01)
| | об этой функции не знал) утром проверю)
а почему два раза, потому что значение получается именно как будто после двух преобразований) вобщем буду пробовать ваши варианты) спасибо) | |
|
|
|
|
|
|
|
для: Николай2357
(09.11.2009 в 01:01)
| | Серв почему то ругается на эту функцию) говорит нопределена) | |
|
|
|
|
|
|
|
для: Синигами
(09.11.2009 в 11:53)
| | Правильно ругается. Потому что я же ссылку дал, надо почитать было, а не копипастить... вот так она выглядет htmlspecialchars_decode() | |
|
|
|
|
|
|
|
для: Синигами
(09.11.2009 в 11:53)
| | - | |
|
|
|
|
|
|
|
для: Николай2357
(09.11.2009 в 12:48)
| | Ну вы за кого меня принимаете) канечно я прочитал описание, синтаксис правильный пишу, дэнвер ругаеться))
Возможно функция введена в более поздней версии ), но врядли) так что хз в чем проблема) | |
|
|
|
|
|
|
|
для: Синигами
(09.11.2009 в 15:55)
| | ну если ВЫ прочли описание, то по идее могли прочесть и в какой версии языка эта функция появилась.
А если у Вас денвер, то определить версию php тоже не проблема.
Какой самысл гадать - тем более через форум? | |
|
|
|
|
|
|
|
для: Синигами
(08.11.2009 в 18:22)
| | Ребят, все варианты про ББ тэги отпадают, в Wysivig этого нету) а заказчик хочет именно его)
нужен вариант преобразования из *амперсандов* в HTML) | |
|
|
|