如何获取两个自定义标签之间的内容?
问题描述:
我想写一个简单的模板系统,我有一个问题。如果我有一个这样的字符串:如何获取两个自定义标签之间的内容?
{% for x in xx %}
some string 1
{% endfor %}
{% for y in yy %}
some string 2
{% endfor %}
我怎么能拿内容some string 1
和some string 2
。我尝试用正则表达式,查找{% for .+ in .+ %}
和{% endfor %}
,并让他们之间的内容匹配他们,但在这种情况下,它得到的是:
some string 1
{% endfor %}
{% for y in yy %}
some string 2
我该怎么办?
UPDATE:
我想我需要的是一个正则表达式,可以做这样的事情:
正则表达式可以算?
答
很可能您正在使用.*
某个地方在您的正则表达式中,这是贪婪的。尝试使用.*?
,而不是非贪心。
(此外,对于任何种类的标签嵌套的,你是不是会想使用正则表达式这样的,而是你需要真正有某种参与堆栈。)
+0
是的,我会写一个递归函数来支持嵌套循环 – wong2 2011-04-05 09:09:42
“{%for x in xx%}”和“'?我强烈建议不要创建自己的模板语言,除非是为了学习目的。正如斯蒂芬所说,PHP已经成为一种优秀的模板语言。而额外的层只会造成更多的复杂性和CPU周期,而附加价值很小。 – 2011-04-05 10:46:23
@fireeyedboy是的,它有一些学习的目的 – wong2 2011-04-05 14:30:16