Столкнулся с проблемой - получаю свойство элемента типа HTML/текст, вроде бы все нормально, но при дальнейшем использовании оказывается, что этот текст имеет скрытые переносы строк в случайных местах (где изначально их не было, но битрикс решил, что теперь будут), а в тех местах, где были настоящие переносы - выводится <br>
Оказалось, что в данной строке содержатся переносы двух видов
1)Реальные, которые можно увидеть как <\b\r> через
echo addcslashes($text, 'A..z');
2)Случайно возникшие, которые невидимы даже так, но все равно присутствуют в строке
Однако при кодировании строки в json, все переносы видны как \r\n, хотя для реальных также дополнительно сохраняется скрытый даже там <br>
И при передаче данного массива для дальнейшей работы отправляются в итоге кривые данные
Решил в итоге таким костылем
Код |
---|
$text = htmlspecialcharsBack($arFields["~PROPERTY_204_VALUE"]["TEXT"]); //получаем значение и сразу отсекаем часть лишних символов
$text = str_replace('<br>', '~BR~', $text); //временно заменяем невидимый код нужных переносов на что-то видимое
$text = json_encode($text);
$text = str_replace('\r\n', '', $text); //сносим все переносы (и наши, и случайные)
$text = str_replace('~BR~', '\r\n', $text); //проставляем переносы в нужных местах
$text = json_decode($text); |
В итоге получилась чистая строка с "совсем невидимыми, но существующими" перносами только в нужных местах