如何在php中提取预定义字符串之间的文本

如何在php中提取预定义字符串之间的文本,php,explode,gettext,substr,Php,Explode,Gettext,Substr,我们正在将系统从GetText更改为MYSQL数据库。 我想将原始“.po”文件中的所有翻译字符串和翻译ID放入数据库 为此,我需要读取文件并循环每一行,这很容易。 困难的部分是当我看到“msgid”或“msgstr”时,我需要提取数据并将其插入数据库 原始文件如下所示: msgid "inactive_ad_detail_text" msgstr "This ad doesn't exists" msgid "breadcrumb_search" msgstr "Search the site

我们正在将系统从GetText更改为MYSQL数据库。 我想将原始“.po”文件中的所有翻译字符串和翻译ID放入数据库

为此,我需要读取文件并循环每一行,这很容易。 困难的部分是当我看到“msgid”或“msgstr”时,我需要提取数据并将其插入数据库

原始文件如下所示:

msgid "inactive_ad_detail_text"
msgstr "This ad doesn't exists"
msgid "breadcrumb_search"
msgstr "Search the site"
(... etc etc ...)
如何在引号之间提取id的名称(msgid)和文本(msgstr)

此外,我还有一些转义文本和两行文本,如:

msgid "question_fill_form"
msgstr ""
"Please fill the form"
"<br>All fields are mandatory"
msgid“问题填写表”
msgstr“”
“请填写表格”
“
所有字段都是必填字段”

msgid "offer_contact_error"
msgstr ""
"Error detected "
"please click \"<em>restart</em>\" on the right side."
msgid“报价\联系方式\错误”
msgstr“”
“检测到错误”
请单击右侧的“重新启动”
我想我需要在行尾之前检测[msgid”]最后一个[“]引号,但我真的不知道如何在PHP中实现

谢谢你的帮助,
Lio

这有一个图书馆。

如果不使用composer,则可以按顺序包含文件或使用自动加载程序加载这些文件

require_once('Sepia/InterfaceHandler.php');
require_once('Sepia/StringHandler.php');
require_once('Sepia/FileHandler.php');
require_once('Sepia/PoParser.php');

这有一个图书馆。

如果不使用composer,则可以按顺序包含文件或使用自动加载程序加载这些文件

require_once('Sepia/InterfaceHandler.php');
require_once('Sepia/StringHandler.php');
require_once('Sepia/FileHandler.php');
require_once('Sepia/PoParser.php');

使用
文件
strpos
substr
功能的解决方案:

假设输入文件
msgdata
包含以下内容:

msgid "question_fill_form"
msgstr ""
"Please fill the form"
"<br>All fields are mandatory"
msgid "offer_contact_error"
msgstr ""
"Error detected "
"please click \"<em>restart</em>\" on the right side."
输出:

Array
(
    [0] => Array
        (
            [msgid] =>  "question_fill_form"

            [msgstr] =>  ""
"Please fill the form"
"
All fields are mandatory"

        )

    [1] => Array
        (
            [msgid] =>  "offer_contact_error"

            [msgstr] =>  ""
"Error detected "
"please click \"restart\" on the right side."
        )
)

使用
文件
strpos
substr
功能的解决方案:

假设输入文件
msgdata
包含以下内容:

msgid "question_fill_form"
msgstr ""
"Please fill the form"
"<br>All fields are mandatory"
msgid "offer_contact_error"
msgstr ""
"Error detected "
"please click \"<em>restart</em>\" on the right side."
输出:

Array
(
    [0] => Array
        (
            [msgid] =>  "question_fill_form"

            [msgstr] =>  ""
"Please fill the form"
"
All fields are mandatory"

        )

    [1] => Array
        (
            [msgid] =>  "offer_contact_error"

            [msgstr] =>  ""
"Error detected "
"please click \"restart\" on the right side."
        )
)

谢谢,a我不使用composer,我需要包括什么文件?包括('/Sepia/PoParser.php');更新了答案。谢谢,a我不使用composer,我需要包括什么文件?包括('/Sepia/PoParser.php');更新了答案。