2014-12-05 3 views
2
내가 사용 나뭇 가지 페이지 내에서 서식있는 텍스트 블록을 표시하고

을 표시되는 내용의 길이를 트리밍 동안 나뭇 가지에 HTML을 표시합니다방법은 여전히 ​​

{{ log.entry[:50] ~ '...' | raw }} 


{{ log.entry | raw [:50] ~ '...'}} 
01 : 나는 아래 형식 중 하나에 두 가지를 결합하면 이전에는

{{ log.entry[:50] ~ '...'}} 

를 사용하여이의 처음 50 개 문자를 표시했다

형식이없는 HTML 형식으로 표시됩니다. 나뭇 가지를 사용하여 50 자 정도의 텍스트를 서식있는 텍스트 형식으로 표시하는 방법에 대한 의견이 있으십니까?

+0

* 리치 텍스트 * 란 무엇입니까? HTML 태그가있는 텍스트입니까? 50 번째 문자가 HTML 태그의 중간에 있고 그것을 자르면 어떻게 될까요? 그것은 단순한 문제가 아닙니다. –

+0

이 컨텍스트의 리치 텍스트는 html 태그를 포함하고 있습니다. 그렇습니다. 나는 태그 중간에 멈추는 문제에 직면 해 있습니다. 그러나 이것이 내가 경험이 많은 나뭇 가지 또는 PHP 사용자에게 접근하려는 이유입니다. – Jacob

답변

1

Twig는 템플릿 엔진 일 뿐이며 원하는대로 할 수 없습니다. 당신이해야 할 일은 당신이 먹이를주고있는 데이터를 바꾸는 것입니다.

Log.entry은 전체 로그 문자열을 반환한다고 가정하면 첫 번째 닫는 태그가 발생할 때까지 최소 문자 수를 반환하는 Log.entry_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을 | 원시}}.

좀 덜 편리한 가정 : 여기

나는 모든 닫는 태그 동일하지만, 모두가 </*>의 형태가없는 가정합니다. Log.entry 변수이지만,이 경우에는 바로 상기 용액 통합 방법을 추가하는 경우 당연히

// 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); 

약간 다른 솔루션이 될 것이다.

+0

고마워, 탐구 후 나는 PHP를 사용해야 할 것이라고 결론을 내렸다. 슬프게도 많은 다리 작동하지만 여전히 솔루션. – Jacob

관련 문제