【问题标题】:How to get text before and after specific string如何在特定字符串之前和之后获取文本
【发布时间】:2013-11-22 20:28:33
【问题描述】:

我将内容存储在变量中,并且我有一个用户在搜索字段中输入的字符串。

我的问题是如何在搜索到的字符串前后截断文本?

-SearchString 有一个用户输入的值。

-Wholetext 拥有数据库中的全部数据。

现在,我想将Wholetext 显示为摘录,例如用户搜索“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 的奏鸣曲管理员。

【问题讨论】:

    标签: php symfony twig sonata-admin symfony-sonata


    【解决方案1】:

    您可以使用 substr 和 strlen 的组合。

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

    或者,您可以分解搜索词上的整个文本,这将留下一个由两部分组成的数组(假设您的搜索词只出现一次)。第一部分将是搜索词之前的所有内容。第二部分将是之后的一切。

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

    【讨论】:

    • 感谢您的回答,但我如何在 twig 中实现这一点?任何想法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多