如何搜索和替换文件中特定文本后的下一个值 - PHP
How to search and replace the next value after specific text in a file - PHP
我想在 #id:
特定字符之后搜索并替换 PO file (its a translation file for CakePHP)
中的字符串
这是 PO 文件中的示例文本。
#id: 4
msgctxt "team 1"
msgid "john"
msgstr "전세계 강사와 영어회화 레슨을 받을 수 있는 서비스입니다."
#id: 5
msgctxt "team 2"
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
..
and so on..
例子。我想从我的数据库中替换 #id: 5
之后的字符串 msgctxt, msgid, msgstr
。
I got this column in my database msgid, msgctxt and msgstr
预期的输出将是这样的:
#id: 4
msgctxt "team 1"
msgid "john"
msgstr "전세계 강사와 영어회화 레슨을 받을 수 있는 서비스입니다."
#id: 5
msgctxt "team 2"
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
..
and so on..
我试过这个,但我不知道如何在 PO 文件中使用 str_replace
查找字符串。
$newContent .= '#id: ' . $po['id'] . "\n";
$newContent .= 'msgctxt "' . trim($po['msgctxt']) . '"' . "\n";
$newContent .= 'msgid "' . trim($po['msgid']) . '"' . "\n";
$newContent .= 'msgstr "' . trim($po['msgstr']) . '"';
$file = file_get_contents($filepath);
$data = str_replace($file, $newContent, $file); // I dont think if its correct to find the string.
file_put_contents($filepath, $data);
请注意:#id:
是动态的。
更新:
有时,我会在 PO 文件中获取这些数据。
#id: 4
#: https://url // sometimes don't have this
msgctxt "team 1" // sometimes don't have this
msgid "john"
msgstr "translation here"
#id: 5
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
嗯,我想你可以试试这个:
$file = <<<str
#id: 4
msgctxt "team 1"
msgid "john"
msgstr "전세계 강사와 영어회화 레슨을 받을 수 있는 서비스입니다."
#id: 5
msgctxt "team 2"
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
..
and so on..
str;
$newContent = <<<str
#id:
msgctxt ""
msgid ""
msgstr ""
str;
$data = preg_replace('/#id:\s*([0-9]+)\s*\nmsgctxt\s*"(.*?)"\s*\nmsgid\s*"(.*?)"\s*\nmsgstr\s*"(.*?)"/', $newContent, $file);
</code>、<code>
、</code>指的是<code>msgctxt
、msgid
、msgstr
后面的原文内容,改成任何你喜欢的信息。您也可以将 [0-9]+
更改为您想要的任何特定 ID。
我想在 #id:
PO file (its a translation file for CakePHP)
中的字符串
这是 PO 文件中的示例文本。
#id: 4
msgctxt "team 1"
msgid "john"
msgstr "전세계 강사와 영어회화 레슨을 받을 수 있는 서비스입니다."
#id: 5
msgctxt "team 2"
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
..
and so on..
例子。我想从我的数据库中替换 #id: 5
之后的字符串 msgctxt, msgid, msgstr
。
I got this column in my database msgid, msgctxt and msgstr
预期的输出将是这样的:
#id: 4
msgctxt "team 1"
msgid "john"
msgstr "전세계 강사와 영어회화 레슨을 받을 수 있는 서비스입니다."
#id: 5
msgctxt "team 2"
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
..
and so on..
我试过这个,但我不知道如何在 PO 文件中使用 str_replace
查找字符串。
$newContent .= '#id: ' . $po['id'] . "\n";
$newContent .= 'msgctxt "' . trim($po['msgctxt']) . '"' . "\n";
$newContent .= 'msgid "' . trim($po['msgid']) . '"' . "\n";
$newContent .= 'msgstr "' . trim($po['msgstr']) . '"';
$file = file_get_contents($filepath);
$data = str_replace($file, $newContent, $file); // I dont think if its correct to find the string.
file_put_contents($filepath, $data);
请注意:#id:
是动态的。
更新: 有时,我会在 PO 文件中获取这些数据。
#id: 4
#: https://url // sometimes don't have this
msgctxt "team 1" // sometimes don't have this
msgid "john"
msgstr "translation here"
#id: 5
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
嗯,我想你可以试试这个:
$file = <<<str
#id: 4
msgctxt "team 1"
msgid "john"
msgstr "전세계 강사와 영어회화 레슨을 받을 수 있는 서비스입니다."
#id: 5
msgctxt "team 2"
msgid "jane"
msgstr "translation here"
#id: 6
msgctxt "team 3"
msgid "jen"
msgstr "translation here"
..
and so on..
str;
$newContent = <<<str
#id:
msgctxt ""
msgid ""
msgstr ""
str;
$data = preg_replace('/#id:\s*([0-9]+)\s*\nmsgctxt\s*"(.*?)"\s*\nmsgid\s*"(.*?)"\s*\nmsgstr\s*"(.*?)"/', $newContent, $file);
</code>、<code>
、</code>指的是<code>msgctxt
、msgid
、msgstr
后面的原文内容,改成任何你喜欢的信息。您也可以将 [0-9]+
更改为您想要的任何特定 ID。