我在php中为多语言网站创建了自己的l($text)
函数。我在我的文件中使用它:
echo '<h1>' . l('Title of the page') . '</h1';
echo '<p>' . l('Some text here...') . '</p>';
我的问题是,使用php脚本,我如何扫描所有.php
文件以捕获所有这些函数用法并列出用于mysql表的所有参数?
当然,目标是不要忘记我的traduction文件中的任何句子。
我在google或这里找不到任何内容,所以如果您有任何想法,或者需要更多信息。
答案 0 :(得分:1)
你可以:
看起来很简单?
答案 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表中记录条目即可完成,并确保我可以在网站发生变化时不时加载脚本...保留现有翻译,覆盖现有文件等...没问题这一点。
感谢收获,这个网站真的很有帮助! : - )