НЕЗНАЙКА » 2011.04.16 13:11

Привет. Грубо говоря написал (вернее готовое взял) шаблонизатор. Есть функция обработки спецсимволов. Добавляя переменные на выходе имеем &quote; вместо кавычки. Что не так?

Код:

1
span style="color: #0000BB"><?php // Замена на HTML сущности private function xss($var) { if (is_array($var)) { $protected = array(); foreach ($var AS $key=>$value) $protected[$key] = $this->xss($value); return $protected; } return htmlspecialchars($var); }// Переждаем параметры// true включает экранизацию$view->show('template', array('title' => 'Привет, "мир"!'), true);?>
tipsun » 2011.04.16 13:16

Код:

1
span style="color: #0000BB"><?php // Замена на HTML сущности private function xss($var) { if (is_array($var)) { $protected = array(); foreach ($var AS $key=>$value) $protected[$key] = $this->xss($value); return $protected; } else //так пробовал? { return htmlspecialchars($var); } }// Переждаем параметры// true включает экранизацию$view->assign('template', array('title' => 'Привет, "мир"!'), true);?>
НЕЗНАЙКА » 2011.04.16 13:22

Тут как бы неважно else. Блок условия останавливается после return

tipsun » 2011.04.16 13:23

А точно, там return в первом же.

НЕЗНАЙКА » 2011.04.16 13:23

Тут дело скорее в другом. Я передаю несколько параметров в разных частях, но в итоге обрабатывается общий массив этих параметров

Gemorroj » 2011.04.16 13:27

дело не тут. очевидно же, что htmlspecialchars вызывается 1 раз. где-то он вызывается повторно.

НЕЗНАЙКА » 2011.04.16 13:30

Один assign в файле php.
Второй и Третий в шаблоне.
И функция обрабатывает уже весь этот результат, а не как я задаю true/false:( А хотел, чтобы некоторые данные были "как есть".

Gemorroj » 2011.04.16 13:33

нафига в assign???? убери оттуда обработку. это задача шаблона. данные можно отдавать не только в html, так что внутри модели они должны быть в оригинальном виде.

НЕЗНАЙКА » 2011.04.16 13:37

"Обрабатывать нужно в шаблоне" я так понял?
Но это ее для каждой переменной пропиывать нечто echo htmlspecialchars($title)
Или же просто убрать обработку из assign и оставить... Бл@ Точно! В show как бы дубль assign, чтобы сразу переменные в шаблон послать. И там стоит true

Gemorroj » 2011.04.16 13:42

ну смотря как шаблонизатор организован.
в smarty это escape http://www.smarty.net/docsv2/en/languag … escape.tpl

НЕЗНАЙКА » 2011.04.16 13:50

У меня конкретно лишь html нужно обработать. Тема исчерпана, спасибо