繁体   English   中英

PHP正则表达式:替换本地化字符串

[英]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);

它可以正常工作,只是它不替换括号。 因此,如果我的I18n文件为“是| Ja” ,并且在我的视图文件中写入[[是]],则它带有[[Ja]]

我花了几个小时尝试和谷歌搜索,但不幸的是-没有。 有任何想法吗?

这将捕获两个方括号\\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);

抱歉,您可以通过以下方式替换模式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM