2013-11-22 2 views
1

콘텐츠에 변수가 저장되어 있고 사용자가 검색 필드에 입력하는 문자열이 있습니다.특정 문자열 앞뒤에 텍스트를 가져 오는 방법

제 질문은 어떻게 검색된 문자열 앞뒤에 텍스트를자를 수 있습니까?

- SearchString에는 사용자가 입력 한 값이 있습니다.

-Wholetext에는 데이터베이스의 전체 데이터가 있습니다.

지금, 나는 "테스트"에 대한 사용자 검색과 같은 발췌로 Wholetext을 보여주고 싶어하고 나는 같은 결과가 표시됩니다 :

"텍스트 검색 문자열 앞에": "테스트"

"를 검색 문자열 후 텍스트 ":" 는 _ "

여기 내 코드입니다 : 현재

{% block field %} 
    <div> 
     {% set SearchString=admin.datagrid.filters.data.value.value %} 
     <div class="less_resume_container"> 
      {% if SearchString is defined and SearchString in object.data %} 
       {% set Wholetext= object.data|replace({ (SearchString): '<span style="background-color: #FFFF00;font-size:15px;font-weight:bold">' ~SearchString~'</span>'}) %} 
       {{ Wholetext|striptags()|truncate(50) }} <a href="javascript:void(0)" class="show_full_resume">Show 
       more</a> 
      {% else %} 
       {% set Wholetext= object.data %} 
       {{ Wholetext|truncate(50) }} <a href="javascript:void(0)" class="show_full_resume">Show more</a> 
      {% endif %} 
     </div> 
     <div class="full_resume_container" style="display: none;">{{ Wholetext|raw() }} 
      <a href="javascript:void(0)" class="show_less_resume">View less</a> 
     </div> 

     <br/> 

    </div> 
{% endblock %} 

그것은 내가 텍스트에서 50자를 보여줍니다. 이것은 내가 원하는 것이 아닙니다. 그런데 심포니 2와 함께 소나타 관리자를 사용하고 있습니다.

답변

0

substr과 strlen의 조합을 사용할 수 있습니다.

substr(WHOLETEXT, 0, (strlen(WHOLETEXT) - strlen(SEARCHTERM))) 

또는, (검색어는 한 번만 나타나 가정) 두 부분 배열 당신을 떠날 것이다, 검색어에 전체 텍스트를 폭발 할 수 있습니다. 첫 번째 부분은 검색어 이전의 모든 것입니다. 두 번째 부분은 모든 것이 될 것입니다.

$array = explode(SEARCHTERM, WHOLETEXT); 
$before = $array[0]; 
$after = $array[1]; 
+0

답변 주셔서 감사합니다.하지만 어떻게 나뭇 가지에서 구현할 수 있습니까? 어떤 생각 –

관련 문제