文字列の長さを制限するにはどうすればよいですか?データベースから説明値を取得していますが、のみ特定の文字数を表示したいと思います。
切り捨て関数で試してください:
まず、アクティブ化する必要がありますテキスト拡張:
_# app/config/config.yml
services:
twig.extension.text:
class: Twig_Extensions_Extension_Text
tags:
- { name: twig.extension }
_
次に、次のように、Twigテンプレート内でtruncate()
ヘルパーを呼び出すことができます。
_{{ variable.description | truncate(100, true) }}
_
これを試して :
{{ entity.description|striptags|slice(0, 40) }}
striptags
filter はHTMLタグを削除します。これにより、2でタグが切り取られるのを回避できます。この基本ケースの例:Text ... <img src="http://examp
slice
filter はテキストを切り取り、最初の40文字だけを残しますこれを使用して、ブログ投稿を切り捨て、省略記号を表示しました。
{{ post.excerpt|striptags|length > 100 ? post.excerpt|striptags|slice(0, 100) ~ '...' : post.excerpt|striptags }}
投稿の抜粋の長さが100文字を超える場合は、最初の文字から始まる100文字でslice
し、「...」を追加します。それ以外の場合は、全文を表示します。
したがって、詳細が示されていない上記のオプションがいくつかあるので、ここにもう少し情報があります。
{{ variable.description|truncate(100) }}
これにより、テキストが100文字で正確に切り捨てられます。ここでの問題は、100番目の文字が単語の途中にある場合、その単語が半分にカットされることです。
したがって、これを回避するために、切り捨て呼び出しに「true」を追加できます。
{{ variable.description|truncate(100, true) }}
これを行うと、truncateは、カットオフポイントで単語の途中にいるかどうかを確認し、途中にある場合は、その単語の最後にある文字列を切り取ります。
HTMLを含む可能性のある文字列も切り捨てる場合は、最初にそれらのタグを削除する必要があります。
{{ (variable.description|striptags)|truncate(100) }}
これの唯一のわずかな欠点は、改行文字(段落タグに組み込まれている文字など)が失われることです。ただし、比較的短い文字列を切り捨てる場合、これはおそらく問題にはなりません。
特定の文字数に切り捨てたいので、これは特定の質問に対する答えではないことを私は知っていますが、CSSを使用して同様のことを実現することもできます。つまり、IE8とIE9をまだサポートしていない限り、いくつかの注意点があります。
テキストオーバーフローでは、これは省略記号の値を使用して実行できます。これがCSS-TRICKSからのサンプルです:
.truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: Ellipsis;
}
これにより、テキストをコンテナの幅に切り捨てることができますが、特定の文字数については、受け入れられたTWIG解像度[〜#〜] truncate [ 〜#〜]関数は完全に機能します。
参照:https://css-tricks.com/snippets/css/truncate-string-with-Ellipsis/
これを使用できますTwig拡張子:
使用法
{{ text|Ellipsis(20) }}
{{ text|Ellipsis(20, '///') }}
namespace AppBundle\Twig;
//src/AppBundle/Twig/TwigTextExtension.php
class TwigTextExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('Ellipsis', array($this, 'ellipsisFilter')),
);
}
public function ellipsisFilter($text, $maxLen = 50, $Ellipsis = '...')
{
if ( strlen($text) <= $maxLen)
return $text;
return substr($text, 0, $maxLen-3).$Ellipsis;
}
}
Services.ymlにサービスとして登録します
services:
twig.extension.twigtext:
class: AppBundle\Twig\TwigTextExtension
tags:
- { name: twig.extension }