Как проверить все использования пользовательской функции во всех моих файлах php? - PullRequest
0 голосов
/ 12 марта 2012

Я создал свою собственную функцию l($text) в php для многоязычного веб-сайта.Я использую это в своих документах следующим образом:

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

Мой вопрос, с помощью php-скрипта, как я могу отсканировать все мои .php файлы, чтобы перехватить все случаи использования этой функции и перечислить все аргументы, использованные вMySQL таблицы?цель, конечно же, состоит в том, чтобы не забыть ни одного предложения в моих файлах traduction.

Я не нашел ничего в Google или здесь, так что если у вас есть какие-либо идеи или вам нужна дополнительная информация.

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Не могли бы вы:

  • читать все * .php файлы с помощью glob ()
  • затем используйте регулярное выражение, чтобы вытянуть строки (preg_match ())
  • строк простой mysql вставить?

Кажется достаточно простым?

0 голосов
/ 13 марта 2012

Я только что закончил, ваша помощь была полезной!: -)

вот мой уродливый код для тех, кому это может быть интересно.это не красиво написано, но не предназначено для загрузки 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);
    }
}
?>

небольшая точность: мне нужно избегать различных случаев, таких как: -> CSS: background: url ('image.jpg ');и -> jQuery: $ (this) .html ('bla bla');вот почему регулярное выражение начинается с [^ az (]: -)

, теперь оно работает очень хорошо!просто нужно позже закончить с записью записей в таблице MySQL и убедиться, что я могу время от времени загружать скрипт, когда есть изменения на сайте ... сохранить существующий перевод, перезаписать существующие файлы и т.д. ... нет проблем счто.

спасибо, этот сайт действительно полезен!: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...