preg_replace和gettext问题

时间:2011-02-21 17:45:16

标签: php gettext

我的项目包含HTML模板。为了简化本地化,我在HTML模板的所有内容中添加了一个前缀和后缀。由于我无法在HTML中使用_(),因此在显示模板之前我会进行替换:

preg_replace("%\<t\>([a-zA-Z0-9\.\\s)]*)\</t\>%is",_("$1"),$template);

我用我的_()翻译功能替换了tr(),显然它被点击了,我猜不能找到翻译。

当我使用print _('same text');时,它会正确显示。

preg_replace("%\<t\>([a-zA-Z0-9\.\\s)]*)\</t\>%is",_("hello"),$template);

所以我猜测在使用preg_replace这样的时候找到翻译有一些问题。

我不是在寻找存储数据的替代方案,如果您有任何问题,我正在寻找解决方案。

2 个答案:

答案 0 :(得分:2)

使用preg_replace_callback/e(eval - 这就是为什么它听起来像邪恶!)修饰符preg_replace

答案 1 :(得分:1)

你在preg_replace被触发之前调用gettext函数,你需要允许PCRE库为你调用这个函数,如果你使用PHP5 +那么试试这个:

preg_replace_callback("%\<t\>([a-zA-Z0-9\.\\s)]*)\</t\>%is",function($matches){
    return $matches[1];
},$template);