【问题标题】:use regexp to search function calls in code使用正则表达式搜索代码中的函数调用
【发布时间】:2011-08-27 20:41:20
【问题描述】:

我尝试通过查找“t()”函数调用从 php 中的源代码创建 .mo 文件,我知道一种更好的方法是使用 preg_match 之类的正则表达式函数,但我不是更好地创建正则表达式,有什么帮助吗?

(对不起我的英语......)

【问题讨论】:

  • 请提供一些输入示例,并清楚说明您要匹配的子字符串。
  • @Bart:相信作者想生成gettext生成的.mo文件。 t() 函数可能相当于 gettext 的 _() 函数。作者需要找到所有这些函数调用才能得到未翻译的源字符串。
  • @Sander,正是你所说的,谢谢

标签: php regex po mo


【解决方案1】:

不,preg_match 并不好。如果要解析 PHP 代码,请使用 tokenizer。它更可靠。

【讨论】:

  • 哦,非常感谢,我在谷歌上搜索了很多这个解决方案,也许我不知道如何用正确的方式谷歌:(,我做了一些测试,这正是我需要的,非常感谢再来一次!!!
  • @DavidB:如果这解决了您的问题,请考虑accepting my answer,点击我答案上的大“勾号”图标。谢谢。
  • 当然,对不起,这是我在这里的第一个问题,我不知道,完成了。
  • 您能说得更详细些吗?标记器为函数调用返回与普通旧字符串相同的标记常量(它返回 T_STRING),因此不清楚如何确定您已找到对函数 t 的调用与包含字母 t 的字符串. (我在 5.3.11 上,但文档没有提到函数调用的任何常量,所以我认为这在所有版本中都是相同的。)
【解决方案2】:

假设您在 t() 调用中没有函数调用,匹配它们的最简单方法是

t\([^)]*?\)

【讨论】:

  • 对不起,我解释得不是很好,有很多代码围绕 de t() 调用,但感谢您的时间和帮助
猜你喜欢
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2011-09-02
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多