preg_replace and gettext problem
My project has templates with HTML. In order to ease the localization, I have added a preffix and suffix in all things I want to be translated of the HTML templates. Since I can't use _()
inside HTML, I do a replace before showing the template:
preg_replace("%\<t\>([a-zA-Z0-9\.\\s)]*)\</t\>%is",_("$1"),$template);
I replaced _()
with my tr()
translating function and apparently it gets hit, just cant find the translation i guess.
When I use print _('same text');
it shows up correctly.
preg_replace("%\<t\>([a-zA-Z0-9\.\\s)]*)开发者_StackOverflow中文版\</t\>%is",_("hello"),$template);
So i'm guessing there's some issue locating the translations while using preg_replace
like that.
I'm not looking for alternatives to storing the data, I'm looking for a solution to this problem if you have any.
Use preg_replace_callback
or the /e
(eval - and it has a reason why it sounds like evil!) modifier of preg_replace
.
your calling the gettext function before the preg_replace has fired, you need to allow the PCRE library to call the function for you, if your using PHP5+ then try this:
preg_replace_callback("%\<t\>([a-zA-Z0-9\.\\s)]*)\</t\>%is",function($matches){
return $matches[1];
},$template);
精彩评论