限制字符串樹枝
回答
與嘗試截斷功能:
首先,你需要激活文本擴展:
# app/config/config.yml
services:
twig.extension.text:
class: Twig_Extensions_Extension_Text
tags:
- { name: twig.extension }
然後,您可以將您的嫩枝模板中調用truncate()
幫手如下:
{{ variable.description | truncate(100, true) }}
試試這個:
{{ entity.description|striptags|slice(0, 40) }}
- 的
striptags
filter將刪除HTML標籤,這將避免削減標籤2,例如在此基礎情況:Text ... <img src="http://examp
- 的
slice
filter將削減的文字,只保留40個第一字符
我可以驗證這個作品。我正在創建一個名爲摘錄的內容類型,我需要用最多100個字符的小說明。 –
所以,有一對夫婦的上述未給出任何詳細列出的選項,所以這裏的多一點信息:
{{ variable.description|truncate(100) }}
這會將您的文本完全切斷爲100個字符。這裏的問題是,如果第100個字符在一個單詞的中間,那麼這個單詞將被減半。
因此,要解決這個問題,我們可以添加「真」到截斷電話:
{{ variable.description|truncate(100, true) }}
當我們這樣做,削去會檢查,看看是否我們是在一個字在切割中間如果是的話,它會在該單詞的結尾處切斷字符串。
如果我們還希望截斷可能包含一些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/
我用這個截斷的博客文章,並顯示一個省略號..
{{ post.excerpt|striptags|length > 100 ? post.excerpt|striptags|slice(0, 100) ~ '...' : post.excerpt|striptags }}
如果後期摘錄長度大於100個字符,然後slice
它在數百字從第一個開始,並附加'...' 否則顯示全文..
'striptags'用於計算字符串的長度,但不能截斷字符串。如果字符串以標籤開始會發生什麼? –
你有什麼建議? –
在第二個'slice'之前應用'striptags'。 –
您可以使用此枝條擴展:
使用
{{ 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 }
- 1. 根路徑樹枝限制
- 2. 字符串與樹枝逃脫?
- 3. 樹枝:連接字符串變量
- 4. 如何強制一個樹枝變量來解析字符串?
- 5. 樹枝和引號字符
- 6. 樹枝:如何獲得字符串中的第一個字符
- 7. 樹枝斷字
- 8. Symfony2樹枝無限深度
- 9. 如何在樹枝中添加分隔符到字符串?
- 10. 字符串限制字 - UTF8
- 11. 剪枝樹枝
- 12. 樹枝與樹枝原始
- 13. \ t字符在樹枝輸出
- 14. 只顯示樹枝中的字符數
- 15. 限制ASIHTTPRequest字符串
- 16. 限制Textarea字符串聯
- 17. JavaScript字符串限制?
- 18. 限制字符串長度
- 19. snmp字符串限制?
- 20. Java字符串限制
- 21. 樹枝中的子串數
- 22. 樹枝條部分的字符串如果爲真
- 23. 樹枝設置從一個字符串和變量的值
- 24. Silex +從樹枝視圖中獲取翻譯字符串
- 25. 樹枝 - 從字符串中獲取單詞的數量
- 26. 樹枝字符串轉換爲對象,它代表
- 27. JSON字符串在樹枝模板中傳遞不正確
- 28. 插入變量到顯示字符串樹枝
- 29. 從樹枝模板數據庫的Unescape HTML字符串
- 30. 回聲json在symfony樹枝中編碼的字符串
應該不會出現管道和過濾器名稱之間的空間:'| truncate',否則twig會尋找名爲'truncate'的過濾器(前面有空格)。 – Tim
首先,我們必須安裝樹枝擴展庫。這是[這裏](https://github.com/twigphp/Twig-extensions)。 –