树枝只是一个模板引擎,它不会做你想要的。你需要做的是改变你喂养它的数据。
假设Log.entry
是一种返回整个日志字符串的方法,您可以创建一个类似的方法,比如说Log.entry_50
返回50个字符,直到遇到第一个结束标记。 (假设您希望能够显示整个字符串,而不仅仅是前50个字符)
方便的假设:所有结束标记都是相同的,比如说</X>
。在你的方法entry_50
,从entry
采取串并执行以下操作:
// assuming $entry holds the entire string
$closing_tag = '</X>';
$end = strpos($entry, $closing_tag, 49) + 4; //add 4 because you want to include te entire closing tag
return substr($entry,0,$end);
现在做{{Log.entry_50 |原始}}在你的树枝模板。
有点不方便的假设:
在这里,我将承担所有未关闭标签相同,但都具有</*>
形式。
// assuming $entry holds the entire string
$closing_tag_beginning = '</';
$closing_tag_end = '>';
$end_start = strpos($entry, $closing_tag_beginning, 49);
$end_end = strpos($entry, $closing_tag_end, $end_start);
return substr($entry,0,$end_end);
Ofcourse这将是一个稍微不同的解决方案,如果Log.entry
是可变的,但在这种情况下,只添加了结合上述溶液中的方法。
什么是*富文本*?它是与HTML标签的文本?如果第50个字符位于HTML标签的中间并且将其切断,该怎么办?这不是一个简单的问题。 – 2014-12-05 23:02:40
是在这种情况下富文本包含HTML标记,是的,我意识到我面临停止在标签中间的问题,但这就是为什么我试图接触到更有经验的树枝或PHP用户:) – Jacob 2014-12-06 08:48:05