Методы для работы с текстом и html-кодом.
Балансировать теги, то есть, обеспечить парность открывающих и закрывающих тегов.
Имеется аналогичный параметр поля balance-tags:
$fields[1]['balance-tags'] = true;
Удаляет все атрибуты html-элементов.
Имеется аналогичный параметр поля remove-attributes:
$fields[1]['remove-attributes'] = true;
Удаляет элементы с заданными тегами (вместе с содержимым).
Пример: $text2 = Text::removeElements($text, 'script|style');
Имеется аналогичный параметр поля remove-elements:
$fields[1]['remove-elements'] = $tags;
Метод удаляет из html-кода теги, превращая его в обычный текст (plain text). Удаляются также переносы, табуляции и двойные пробелы. Метод обычно применяется для подготовки html-атрибутов (title, alt), метатегов и т.п.
$options = [
'strip-quotes'=>true, # Удалить кавычки.
'nl2br'=>true, # Заменить переводы строк на тег <br />, то есть, html-перенос строки.
'tab2nbsp'=>true, # Заменить табуляцию на четыре пробела.
'exceptions'=>'', # Перечень имен тегов, которые не нужно убирать.
# Разрешены два формата: 'a|div|span' или ['a','div','span']
];
Для булевых опций можно применять короткую форму записи. Подробности см. в описании метода Arr::formatOptions(), который и применен внутри описываемого метода.
Булевы опции допустимо записывать как неассоциативный массив:
$options = ['strip-quotes', 'nl2br'];
Более того, если опция только одна, допустимо записывать ее в виде строки:
$options = 'strip-quotes';
Пример:
echo '<img src="..." alt="'.Text::stripTags($dat[1], 'strip-quotes').'" />';
В отличие от php-функции strip_tags(), метод Text::stripTags() не просто удаляет тег <br>, а заменяет его на пробел.
Опция 'nl2br' обычно используется при отключенном визуальном редакторе в окне редактирования. Пользователь редактирует голый текст (без форматирования), но переводы строк при выводе на страничке будут визуально сохраняться. То же самое касается и опции 'tab2nbsp'.
Пример "безопасного" редактирования (работают только переводы строк)
<?php
$types[1] = 'text';
$fields['no-text-editor'] = [1];
<?php
echo $dat['edit'];
echo Text::stripTags($dat[1], 'nl2br');
<?php
if ($_POST['dat']) {
foreach ([1] as $field) # Для нескольких полей: [1,2,4] as ...
$_POST['dat'][$field] = Text::stripTags($_POST['dat'][$field]);
}
$fields[1]['strip-tags'] = $options;
Обрезание текста. В оставшемся тексте корректно восстанавливаются закрывающие html-теги, оставшиеся в удаленной части.
$options = [ 'ellipsis'=>'...', # Код, который нужно присоединить в конце обрезанного текста. # Пример: 'ellipsis'=>'<img src="templates/images/array.png" />', 'split-word'=>false, # Текст обрезать точно по длине, заданной параметром $length, # Обрезать даже если придется обрезать посередине слова 'plain'=>false, # Является ли $text простым текстом, а не гипертекстом. # Данная опция ускорит обрезание, так как не производится проверка на наличие html-тегом. ];
Для булевых опций можно применять короткую форму записи. Подробности см. в описании метода Arr::formatOptions(), который и применен внутри описываемого метода.
Примеры
echo Text::truncate($text, 200, $options);
Если нужно убрать теги и обрезать текст:
echo Text::truncate(Text::stripTags($text, 'strip-quotes'), $length, 'plain');