Php-regex:替换本地化字符串


Php regex: replacing localization string

Stackoverflow用户Casimir et Hippolyte给了我一个很棒的函数,用$this->_()函数返回的本地化字符串替换[[Something]]等字符串。

$that = $this;
$view = preg_replace_callback('~'['['K(?>[^]]++|](?!]))*~', function ($m) use ($that) {
   return $that->__($m[0]); }, $view);

除了不替换支架之外,它还能工作。因此,如果我有"Yes | Ja"我的I18n文件,并且在我的视图文件中我写了[[Yes]],它就会出现[Ja]]

我花了几个小时在谷歌上搜索,但不幸的是,什么都没有。有什么想法吗?

对不起,您可以用替换您的模式

$that = $this;
$view = preg_replace_callback(
        '~'['[((?:[^]]+|](?!]))*+)]]~', function ($m) use ($that) {
        return $that->__($m[1]); }, $view);

这将捕获两个方括号'K'['[(?>[^]]++|](?!]))]]*

输入文本

like [[ yes|ja ]] with 

匹配

[0] => [[ yes|ja ]]
[1] => yes|ja 

我不是python程序员,但我想你会想把你的脚本修改成这样:

$that = $this;
$view = preg_replace_callback('~'K'['[(?>[^]]++|](?!]))]]*~', function ($m) use ($that) {
   return $that->__($m[1]); }, $view);