【发布时间】:2011-04-11 09:01:48
【问题描述】:
在我定制的 cms 中,我需要替换从数据库表中选择的部分文本,其中包含:
Lorem ipsum dolor sit amet, consectetur adipisicing 精英 {块}'myfunc',数组(11, 'thumbnail', 'large', 18){/Block} sed 做eiusmod tempor incidudut ut labore et dolore magna aliqua
带有{Block}的部分文本,应替换为执行myfunc函数的php函数,并传递包含上述数组的参数。
对我来说最大的问题是我不知道文本中有多少个 {Block},以及它们将放置在哪里。
我知道我可以简单地“爆炸”文本,并做一些体操,但我不知道这是否是最好的方法。
我知道这并不简单......如果你能帮我解决这个问题,请。
提前谢谢你!
【问题讨论】:
-
您应该使用 preg_replace(),您可以传递一个修饰符,使其搜索所有 '{block}{/block}' 字符串。
-
@user198003 & @Gerben Jacobs:不要使用 preg_replace。对于这种应用程序来说完全没有意义。任何类型的字符串替换都不利于像这样的复杂字符串解析。如果块是作为参数的文本的一部分等,它将失败。如果您使用这种模板构建 CMS 系统,您需要像真正的语言一样解析每个模板。看看modx之类的。这将提供一些起点。
标签: php regex preg-replace