2013-11-22 5 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 %} 

В настоящее время я s показывает 50 символов из текста. Это не то, что я хочу. Кстати, я использую sonata admin с symfony 2.

ответ

0

Вы можете использовать комбинацию substr и strlen.

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

В качестве альтернативы, вы могли бы взорвать весь текст на срок поиска, который оставит вас две части массива а (предполагается, что ваш поисковый термин появился только один раз). Первой частью будет все до поискового запроса. Вторая часть будет все после.

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

спасибо за ответ, но как я могу реализовать это в веточке? Есть идеи –

Смежные вопросы