2017-03-01 143 views
-2

我正在使用一个简单的php翻译类,我有大约2000多个php文件的翻译类实现和新字符串以及实施,所以我需要一个更新的文本文件与所有翻译字符串。搜索所有php文件中的类之间的字符串

我需要从每个php文件中获取所有翻译后的值,并将其保存到文本文件中,而不会有任何重复的值。

翻译类

<?php $translate->__('Calendar'); ?> 

所以我需要得到日历保存到一个txt文件,这应该所有文件夹中的所有文件来完成。

在一切之间$转换 - > __( '')应保存。

下面的代码由于某种原因不起作用。

$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

那么,祝你好运!说真的,请张贴迄今的尝试。 StackOverflow越来越成为待办事项列表,而不是其他任何东西... – Jan

+0

我把我的代码已经@Jan – adams

回答

1

你用这个方式提取字符串:

/\$translate\-\>__\(\'(.*?)'\)/g 

提取所有的match编项目,并将其保存在任何地方。

演示和详细信息: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); 

注意

  • 在使用正则表达式模式,记得办理反斜线\".."把图案时(改变所有\\\在这种情况下, )
  • 如果使用'...'请勿更改\\\
+0

我试过你的正则表达式,但是它没有返回任何文本,你可以检查上面编辑的代码。 @MohaMad – adams

+0

你错过了反斜线!试试这个:'$ search =“\/\\ $ translate \\ - \\> __ \\(\\'(。*?)'\\)\/g”;' – MohaMad

+0

我得到2个错误:* *注意:未定义的变量:在**和**中翻译警告:preg_match_all():分隔符不能是字母数字或反斜杠** @MohaMad – adams