如何在我的所有php文件中扫描自定义函数的所有用法?

时间:2012-03-11 21:19:15

标签: php file function

我在php中为多语言网站创建了自己的l($text)函数。我在我的文件中使用它:

echo '<h1>' . l('Title of the page') . '</h1';
echo '<p>' . l('Some text here...') . '</p>';

我的问题是,使用php脚本,我如何扫描所有.php文件以捕获所有这些函数用法并列出用于mysql表的所有参数? 当然,目标是不要忘记我的traduction文件中的任何句子。

我在google或这里找不到任何内容,所以如果您有任何想法,或者需要更多信息。

2 个答案:

答案 0 :(得分:1)

你可以:

  • 使用glob()
  • 读取所有* .php文件
  • 然后使用正则表达式拉出字符串(preg_match())
  • 字符串简单的mysql插入?

看起来很简单?

答案 1 :(得分:0)

我刚刚完成,你的帮助很有用! : - )

这是我可能感兴趣的丑陋代码。它没有美妙的编码,但每天不能装载10000次......

<?php
// define a plain text document to see what appen on test
header('Content-Type: text/plain; charset=UTF-8');

$dossier = 'pages/'; // folder to scan
$array_exclude = array('.', '..', '.DS_Store'); // system files to exclude
$array_sentences_list = array();

if(is_dir($dossier)) // verify if is a folder
{
    if($dh = opendir($dossier)) // open folder
    {
        while(($file = readdir($dh)) !== false) // scan all files in the folder
        {
            if(!in_array($file, $array_exclude)) // exclude system files previously listed in array
            {
                echo "\n".'######## ' . strtoupper($file) . ' ##########'."\n";
                $file1 = file('pages/'.$file); // path to the current file
                foreach($file1 AS $fileline)
                {
                    // regex : not start with a to z characters or a (
                    // then catch sentences into l(' and ')
                    // and put results in a $matchs array
                    preg_match_all("#[^a-z\(]l\('(.+)'\)#U", $fileline, $matchs);

                    // fetch the associative array
                    foreach($matchs AS $match_this)
                    {
                        foreach($match_this AS $line)
                        {
                            // technique of "I do not want to break my head"
                            if(substr($line, 0, 3) != "l('" AND substr($line, 0, 4) != " l('" AND substr($line, 0, 4) != ".l('")
                            {
                                // check if the sentence is not already listed
                                if(!in_array($line, $array_sentences_list))
                                {
                                    // if not, add it to the sentences list array and write it for fun !
                                    $array_sentences_list[] = $line;
                                    echo $line . "\n";
                                }
                            }
                        }
                    }
                }
            }
        }
        closedir($dh);
    }
}
?>

小精度:我必须逃避各种情况: - &GT; CSS:background:url('image.jpg'); 和 - &GT; jQuery:$(this).html('bla bla'); 所以这就是正则表达式以[^ a-z(]: - )

开头的原因

现在效果很好!只需要稍后在mysql表中记录条目即可完成,并确保我可以在网站发生变化时不时加载脚本...保留现有翻译,覆盖现有文件等...没问题这一点。

感谢收获,这个网站真的很有帮助! : - )