我有内容存储在变量中,我有一个用户在搜索字段中输入的字符串。
我的问题是如何在搜索到的字符串之前和之后剪切文本?
- SearchString
具有用户输入的值。
- Wholetext
包含数据库中的全部数据。
现在,我想将Wholetext
显示为用户搜索“test”的摘录,然后我会显示结果:
“搜索字符串前的文字”:“test”
“搜索字符串后的文字”:“ _ ”
这是我的代码:
{% 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个字符。 这不是我想要的。顺便说一下,我正在使用带有symfony 2的sonata admin。
答案 0 :(得分:0)
您可以使用substr和strlen的组合。
substr(WHOLETEXT, 0, (strlen(WHOLETEXT) - strlen(SEARCHTERM)))
或者,您可以在搜索字词上分解整个文本,这会留下一个两部分数组(假设您的搜索字词只出现一次)。第一部分是搜索词之前的所有内容。第二部分将是之后的一切。
$array = explode(SEARCHTERM, WHOLETEXT);
$before = $array[0];
$after = $array[1];