parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Требуется двойной taint, или как сделать html encode при записи в базу

Pitonych 19.09.2006 03:49 / 19.09.2006 04:01

Задача на первый взгляд простая - скачать страничку по адресу и записать её сорс в базу

(Для наглядности пример упрощен до абсурда)
# скачиваем страницу по ссылке
$page[^file::load[text;$href;$.timeout(30)]]

# берем её содержимое
$text[$page.text]

# записываем в базу
^void:sql{insert into pages (body) values ('$text')}
Это все работает. Но задача стоит записать сорс в базу в encoded виде, то есть gt; вместо > и так далее. Ну, есть такая потребность.
# скачиваем страницу по ссылке
$page[^file::load[text;$href;$.timeout(30)]]

# берем её содержимое
$text[$page.text]

# делаем преобразование
$text[^taint[html][$text]]

# записываем в базу
^void:sql{insert into pages (body) values ('$text')}
Тут мы падаем - енкоденный html вызывает ошибку в sql при выполнении - тот находит в нем какие-то нехорошие символы, как я понял, внутри закоментенных js-скриптов, там не дублируются апострофы после taint.

Попробовал сделать два последовательных тейнта, но один похоже отменяет другой
$text[^taint[html][$text]]
$text[^taint[sql][$text]]
После такого html в базе не енкоденный.

Подскажите пожалуйста, что я делаю не так, и как все-таки утрамбовать этот текст в базу, в енкоденном виде.