表达式引擎/截断 - 删除<pre> tag</pre>内的任何内容

时间:2012-07-30 21:45:05

标签: php expressionengine truncate pre truncation

我正在使用表达式引擎字段使用<pre>元素和[code]标记发布代码示例,但我也使用此字段作为摘录。在摘录中,我想要删除这些前置元素中的任何内容(或者在它到达<pre>元素时以某种方式停止。有人知道如何执行此操作吗?这是我的摘录代码:

<p class="excerpt">{exp:trunchtml chars="300"}{code_content}{/exp:trunchtml}</p>

这是一个包含代码的示例条目:

</p>Blah blah blah Lorem Ipsum</p> <pre>[code]camera.position.set(0,20,35); [/code]</pre>

1 个答案:

答案 0 :(得分:0)

这是一个非常具体的需求,我所知道的现有插件都不会这样做。你有两个选择:

创建一个专门的摘录字段(在制作更好的摘录和保持数据结构方面真的是最好的)。

或者,write your own plugin(真的不是很难)将获取您传递的内容,然后     在其上执行一些preg_replace()以消除您的<pre>     元素及其所有内容,返回清理结果。

所以它看起来像这样:

<p class="excerpt">
    {exp:trunchtml chars="300"}
        {exp:my_plugin:replace_pre}{code_content}{/exp:my_plugin:replace_pre}
    {/exp:trunchtml}
</p>

这一点PHP会在你的插件中为你带来魔力:

$content = $this->EE->TMPL->tagdata;
preg_replace('/<pre[^>]*>.*?<\/pre>/i', '', $content);
return $content;