Помощь Исключение части кода из проверки на теги

avgccp

Постоялец
Регистрация
2 Май 2014
Сообщения
114
Реакции
9
Приветствую! Помогите решить задачу, второй день голову ломаю:
Задача в следующем: Пытаюсь добавить вывод поля из карточки товара в YML (YANDEX_YML_VERSION', '1.7.3). Создал поле в карточке, вывел его в файл
if ($product['sales_notes_cart'] <> '') {//если в карточке значение sales_notes_cart отлично от пустого
$data['sales_notes'] = $product['sales_notes_cart'];//то берем значение из карточки товара
}
подменив штатную функцию
, НО там стоит удалялка кода:
/**
* Подготовка текстового поля в соответствии с требованиями Яндекса
* Запрещаем любые html-тэги, стандарт XML не допускает использования в текстовых данных
* непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением
* символов с кодами 9, 10, 13 - табуляция, перевод строки, возврат каретки). Также этот
* стандарт требует обязательной замены некоторых символов на их символьные примитивы.
* @param string $text
* @Return string
*/
protected function prepareField($field) {
$field = htmlspecialchars_decode($field);
if (strpos($field, '<![CDATA[') === 0) {
return trim($field);
}
$field = strip_tags($field);
$from = array('"', '&', '>', '<', '\'', '&nbsp;');
$to = array('&quot;', '&amp;', '&gt;', '&lt;', '&apos;', ' ');
$field = str_replace($from, $to, $field);
/**
if ($this->from_charset != 'windows-1251') {
$field = iconv($this->from_charset, 'windows-1251//IGNORE', $field);
}
**/
$field = preg_replace('#[\x00-\x08\x0B-\x0C\x0E-\x1F]+#is', ' ', $field);

return trim($field);
}

В итоге все <>/ режутся и остается только текст, а надо сто бы не резалось.

Просто отключить проверку нельзя (в остальных полях нужно ее оставить).

Натолкните на путь истинный.
 
Назад
Сверху