我正在使用一个简单的PHP翻译类,我有超过2000个php文件,其中实现了翻译类,新的字符串也实现了,所以我需要一个包含所有翻译字符串的更新文本文件。
我需要从每个php文件中获取所有已翻译的值,并将其保存到文本文件中,不会有任何重复值。
翻译课
<?php $translate->__('Calendar'); ?>
所以我需要将日历保存到txt文件中,这应该针对所有文件夹中的所有文件进行。
应保存 $ translate-&gt; __('和')之间的所有内容。
以下代码由于某种原因无效。
$fn = $_SERVER['DOCUMENT_ROOT']."/apps/test/test2/calendar.php";
$handle = fopen($fn, 'r');
$valid = false;
$search = "\/\\$translate\\-\\>__\\(\\'(.*?)'\\)\/g";
while (($buffer = fgets($handle)) !== false) {
if(preg_match_all($search, $buffer, $m)) {
print $m[1];
} else {
}
}
fclose($handle);
答案 0 :(得分:1)
您正在使用此模式提取字符串:
/\$translate\-\>__\(\'(.*?)'\)/g
提取所有match
个ed项并将其保存在任何位置。
演示和详情:https://regex101.com/r/LzMyJY/1
$fn = $_SERVER['DOCUMENT_ROOT']."/apps/test/test2/calendar.php";
$handle = fopen($fn, 'r');
$valid = false;
$search = "/\\".'$'."translate\\-\\>__\\(\\'(.*?)'\\)/g";
while (($buffer = fgets($handle)) !== false) {
if(preg_match_all($search, $buffer, $m)) {
print $m[1];
} else {
}
}
fclose($handle);
注意强>:
\
中放置模式时处理反斜杠".."
(在这种情况下将所有\
更改为\\
)'...'
使用\
,请\\
改变@Configuration
public class HttpClientConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS))
.addResourceLocations("/");
}
}
!