Я поставил Twig, на чистый PHP, передал туда параметры и возник такой вопрос:
У меня есть такой код (выводит текст):
<p>{{ comment.text }}</p>
Как мне разбить этот текст так, чтобы выводило с него 20 символов и была надпись: "показать полный текст"?
К примеру в PHP, это можно сделать через функцию substr()
.
Но мне нужно именно в Twig это сделать, ибо в самом PHP не прокатит, так как в Twig разбиваю на foreach, и будет сложно.
Обрезать тексты через substr()
нельзя, потому что там могут быть символы состоящие из нескольких байт, а substr()
обрезает "побайтно". Для Twig шаблонов, как уже было сказано в соседнем ответе, есть фильтр slice
, но и он не очень хорош, поскольку "режет" слова. Лучше обрезать так, чтобы оставались целые слова.
В Twig
поможет расширение. Использовать так {{ comment.text|truncate(20, true) }}
Нужно учитывать, что данная функция обрезает по пробелу после достижения длины ограничения (то есть строка будет все-таки немного длинее)
Дополнительно можно передать контент, который будет выведен после обрезки (если она была). По-умолчанию это три точки. Не уверен что можно вставить html-тег (скорее всего нужно будет отключить автоэкранирование и экранировать текст перед обрезкой вручную (фильтром escape
или e
). Как-то так
{{ comment.text|e|truncate(20, true, '... <a href="#" class="js-more">показать полный текст</a>')|raw }}
Как вариант, можно написать свой фильтр, который будет обрезать так как вы хотите.
См. также:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу разобраться как работает php функция filter_inputНемного разобрался в PHP, но в документации дается тяжело
Никогда с таким не сталкивался, но появилась необходимость разработать систему, которая бы создавала сайты, что называется, на летуЕсли в двух...
Я хочу знать как можно распарсить аудиозаписи из ВКПервоначально я подумал скачать все через расширение по типу savefrom
На данный вопрос уже ответили: