【发布时间】:2013-04-05 06:39:36
【问题描述】:
尊敬的 stackoverflow 社区,
我目前正在为一个网站制作自己的模板系统,我可以在其中用 php 代码替换 {$stuff} 样式的模板占位符。我有以下代码:
/**
* Replace a default placeholder.
*
* @access public
* @param string $replace Placeholder name
* @param string $replacement Text with which to replace placeholder.
* @uses $leftDelimiter
* @uses $rightDelimiter
* @uses $template
*/
public function assign($replace, $replacement) {
$this->template = str_replace( $this->leftDelimiter .$replace.$this->rightDelimiter,
$replacement, $this->template );
}
在这种情况下,leftDelimiter 和 rightDelimiter 分别是 {$ 和 }。
现在我想添加一个新函数来动态解析包含数字的占位符 - 例如,{$image_1}、{$image_2}、{$image_3},并让我使用其中包含的数字作为我的替换代码,例如我将 {$image_1337} 替换为 ID 为“1337”的行中的 mysql 数据库条目。
我该怎么做呢?可悲的是,由于我缺乏编码词汇和解释能力,广泛的谷歌搜索和询问朋友让我失望了。它可能与正则表达式有关,但我绝对无法将我的大脑包裹在它们周围,并且所有构建合适表达式的尝试都失败了。
【问题讨论】:
-
preg_replace_callback 可能是开始寻找的好地方。
-
我认为您最好以稍微不同的方式看待这个问题。你正在做的不是一个简单的模板分配 - 你正在制作一个辅助方法。所以它应该有自己的语法。可能类似于 {image(1337)}。当然,您仍然需要添加新代码来处理这个问题,但我认为从长远来看它会有所回报。
标签: php regex replace delimiter