【问题标题】:expressionEngine php parsing str_replace not workingexpressionEngine php解析str_replace不起作用
【发布时间】:2011-07-27 05:42:41
【问题描述】:

我有一个在输出上启用了 php 的模板。但是我无法让 str_replace 工作。请参见下面的代码。如果我只是把 {title} 没有任何 php 那么它的工作原理。但是当我在 str_replace 函数中包含 php 并放置 {title} 时,我什么也没有显示。我用简单的 echo 'test' 尝试了 php;它奏效了。它只是不解析 {title} 或其他字段标签。

{exp:channel:entries channel="one" url_title="{segment_2}"}
  <?php
    echo str_replace('old', 'new', '{title}');
  ?>
{/exp:channel:entries}

【问题讨论】:

    标签: php expressionengine


    【解决方案1】:

    这可能听起来很荒谬,但是您是否尝试过从 {exp:channel:entries} 标记中删除 url_title 参数以确保其余代码和逻辑正常工作?

    以下代码应输出“旧测试”的条目标题(不带引号):

    {exp:channel:entries channel="channel_name" entry_id="xx" dynamic="off"}
        {title} 
    {/exp:channel:entries}
    

    给定相同的条目标题“旧测试”,这应该输出:“新测试”(同样,不带引号):

    {exp:channel:entries channel="channel_name" entry_id="xx" dynamic="off"}
        <?php
            echo str_replace('old', 'new', '{title}');
        ?>
    {/exp:channel:entries}
    

    这已在具有 启用 PHP 并设置为 输出 的新空白模板中成功测试。

    【讨论】:

    • @thanks @rjb,我应该使用segment_3 而不是segment_2。它现在可以工作,但是如果我有以下 str_replace 单词数组,它就不起作用。 php 似乎无法识别标题。 $searchArray = array("on", "two", "thre", "fou"); $replaceArray = array("one", "two", "three", "four"); $intoString = "{title}"; echo str_replace($searchArray, $replaceArray, $intoString); {title} 在这里无法识别的任何原因。
    • 以下代码对我有用:ScreenshotPastie
    【解决方案2】:

    您可以尝试嵌入包含您的 PHP 的模板并以这种方式发送变量。输入/输出的解析有时与某些元素无关。

    【讨论】:

    • 这不是解决方案。知道我在说什么的唯一方法就是自己尝试一下。
    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多