如何在树枝上做一个preg_replace

时间:2013-07-10 14:45:33

标签: symfony preg-replace preg-match twig

我目前正在尝试使用视图的当前网址创建变量。要获取网址,我使用{%set uri = app.request.uri%}(uri是我的变量,这是该特定视图的当前网址)。问题是,我只对使url唯一(它的结尾 - 数组中的唯一对象 - 碰巧是uri)的原因感兴趣,而不是开始(我的应用程序的路径)。我以为我可以使用preg_replace这样做,但是TWIG没有这个功能。只是想知道是否有人知道如何完成我想要做的事情?

我是Symfony的新手(也是PHP的新手),所以我的解释可能不太清楚(抱歉)。

实施例

{% set uri = app.request.uri %}

输出:http://website.com/http://item.org/1

我想将uri变量修改为仅http://item.org/1(而不是我网站的路径)。

我正在考虑使用preg_replace创建一个Twig扩展允许我这样做..但不确定它是否是最好的方法(缺乏经验)。


总体目标: 视图中“uri”的唯一值通过具有属性的对象数组($ results)中的另一个视图附加到网站路径,其中一个是“uri”。我的最终目标是只显示$ results数组中对象的所有相关属性(或行)。 我想我可以通过首先在foreach中创建一个键(我的uri变量)并返回与该键匹配的数组中的行来实现此目的。这就是我尝试创建变量的原因使用url以便我可以将它用作我的foreach循环的键来迭代$ results。我没有使用数据库或Doctrine。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

最好的方法是将逻辑从模板移动到控制器。

如果您需要在树枝中使用preg_replace,则必须创建custom extension

答案 1 :(得分:0)

有人似乎为preg_replace创建了一个Twig扩展,请参阅https://github.com/victor-in/Craft-TwigPCRE

答案 2 :(得分:0)

您可以那样做。有点难看,但是可以用。

var config = { keywords: ['python', 'jieba'] },
    keywords = config.keywords,
    keyword;
    
for (keyword in keywords) {
    if (keyword !== '0') {
        keywords[keyword] = keywords[keyword - 1] + " " + keywords[keyword]
        console.log(keywords)
    }
}