在一个类之间搜索所有php文件中的字符串

时间:2017-03-01 14:07:32

标签: php regex class

我正在使用一个简单的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);

1 个答案:

答案 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("/"); } }