PHP - получить содержимое файла без имени файла - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть PHP-скрипт, который получает содержимое текстового файла на основе имени файла, выполняет серию поиска и замены с помощью регулярных выражений, а затем выводит очищенный файл в другую папку.

код выглядит так, для справки:

<?php
$test = file_get_contents('GlobalTest.txt');
$test1 = preg_replace('/[\r\n]+/', "\r\n", $test);

$result = preg_replace('/;\w+;\d+;\d+%.+/m', '', $test1);
$resulta = preg_replace('/^((?!Athens|Baghdad|Hong Kong|Jerusalem|London|Mexico City|Moscow|Paris|Rio de Janeiro|Rome|Tokyo|Global Forecast|~_~_~_~_~_).)*$/m', '', $result);
$resultb = preg_replace('/^(?:[\t]*(?:\r?\n|\r))+/m', '', $resulta);
$resultc = preg_replace('/;.+\D;/m', ';', $resultb);
$resultd = preg_replace('/^(.*?);(?=.*;)/m', '$1 ', $resultc);
$resulte = preg_replace('/;/m', '/', $resultd);
$resultf = preg_replace('/<e0>/m', '', $resulte);
file_put_contents('/Users/asage/Desktop/Forecast/OUT/Output Global Test.txt', $resultf);

unlink ('GlobalTest.txt');
?>

Возможно, есть способы немного это исправить, но пока это работает.

Идея состоит в том, что необработанный текстовый файл собираетсяназываться по-разному каждый день («GlobalTest02122019.txt», «20190213Global.txt» и т. д.), а затем помещаться в папку с меткой IN.

У меня вопрос, есть ли способ получить содержимоекакой текстовый файл помещен в эту папку IN, независимо от имени?Идеальный способ для этого рабочего процесса - не переименовывать какие-либо файлы.

Кроме того, есть ли способ вывести файл в папку OUT и сохранить исходное имя файла?

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

1 Ответ

0 голосов
/ 14 февраля 2019

Если это будет либо единственный файл в каталоге, либо если будет шаблон, который можно сопоставить, чтобы изолировать его (т. Е. Это единственный файл, начинающийся с «Global»), то функция glob() будетполучить тебя там.По сути, он возвращает массив файлов / каталогов, которые соответствуют «традиционным» ссылкам в стиле подстановочных знаков, как вы получили бы с помощью ls или dir

ivan@darkstar:~$ ls t
file1  file2
ivan@darkstar:~$ cat e.php
<?php
    $files=glob("./t/*");
    print_r($files);
?>
ivan@darkstar:~$ php e.php
Array
(
    [0] => ./t/file1
    [1] => ./t/file2
)
ivan@darkstar:~$ 

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

...