是否有用于解析gettext PO POT文件的PHP库?

是否有用于解析gettext PO POT文件的PHP库?,php,parsing,gettext,po,Php,Parsing,Gettext,Po,如果不在PHP中,是否可以使用一些命令行工具将PO文件转换为一些结构化格式,例如XML或其他我可以在PHP中简单处理的格式?一些简单的正则表达式将允许您解析.PO/.POT文件。我最近也做了类似的事情。以我最近编写的脚本中的以下正则表达式为例: $poMsgIdAndMsgStrRegex = '/^#\s*(.+?)\nmsgid "(.+?)"\nmsgstr "(.+?)"/m'; 这只捕获了最后的注释行,但到目前为止,它适用于我的目的。你可能需要调整它 无论如何,您可以将上述正则表达式

如果不在PHP中,是否可以使用一些命令行工具将PO文件转换为一些结构化格式,例如XML或其他我可以在PHP中简单处理的格式?

一些简单的正则表达式将允许您解析.PO/.POT文件。我最近也做了类似的事情。以我最近编写的脚本中的以下正则表达式为例:

$poMsgIdAndMsgStrRegex = '/^#\s*(.+?)\nmsgid "(.+?)"\nmsgstr "(.+?)"/m';
这只捕获了最后的注释行,但到目前为止,它适用于我的目的。你可能需要调整它

无论如何,您可以将上述正则表达式与
preg\u match\u all()
一起使用,以将所有
MsgId
MsgStr
字符串捕获到匹配数组中。一旦你有了数组,你就可以把它转换成任何你想要的格式

可能有这样做的库,但我没有看到任何


编辑:您可能还想查看PHP类,以转换“可能重复”注释中提到的.po文件.mo格式。听起来它并不能解决您的问题(因为您希望将.po文件转换为XML),但无论如何它都值得一试。这对我帮助很大

更新:截至2018/05,最佳选项为:

有一些:


最后一个是Drupal的一部分,它可能是维护得最多的。

可能的重复将适用于过于简单的POs,但不适用于任何复数形式或多行条目的POs。只是一个提醒。我们正在开发一个库,当它可用时,我会在这里发布一个链接。@DougW-你完成过你的库吗?@rcourtna-我们已经编写了一个库,但还没有机会将它转换成我们可以开源的形式。我很想这样做,但不幸的是,这将不得不发生,因为我们有多余的时间。同时,我可以向您指出一个名为Babel的库,它在解析POs方面做得很好。我们在UTF-8编码等方面遇到了一些问题,但它应该可以满足大多数需要+1为