Как прочитать любой тип файла с помощью php7?

Я попытался извлечь адреса электронной почты пользователя с моего сервера. Но проблема в том, что максимальные файлы .txt но некоторые CSV файлы с расширением txt. Когда я пытаюсь прочитать и извлечь, я не смог прочитать файлы CSV с расширением TXT. Вот мой код:

<?php
$handle = fopen('2.txt', "r");
while(!feof($handle)) {
$string = fgets($handle);
$pattern = '/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/i';
preg_match_all($pattern, $string, $matches);
foreach($matches[0] as $match)
{
echo $match;
echo '<br><br>';
}
}
?>

Я пытался использовать этот код для этого. Программа читает полный файл CSV, а строка за строкой — текстовый файл. Есть тысячи файлов и, следовательно, это трудно идентифицировать.

Пожалуйста, предложите мне, что я должен сделать, чтобы решить мою проблему? Есть ли какое-нибудь решение, которое может читать любой формат, тогда оно будет потрясающим.

1

Решение

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

Если вы используете шаблон проектирования адаптера, у вас будет код, проверяющий расширение открываемого файла, и switch либо с txt или же csv. Based on the value you would retrieve aTxtParseror aCsvParser` соответственно.

Однако, прежде чем углубиться в эту территорию, вы можете сначала посмотреть файлы. Я не могу сказать это наверняка, не видя структур, но вы можете. Если содержимое как текстовых, так и CSV-файлов одинаково, то очень простой подход — изменить расширение на TXT или CSV-файл для всех файлов, а затем обработать их, используя одинаковую логику, зная, что файлы с одинаковым расширением теперь будут обрабатываться таким же образом.

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

В любом случае, я очень сильно сомневаюсь, поэтому есть решение проблемы, с которой вы сталкиваетесь, поскольку файловая структура в основном ваша и ваша.

1

Другие решения

Итак, проблема в том, что в CSV-файле слишком длинная строка. Исходя из этого ограничения, я предлагаю вам использовать пример из php.net Вот пример:

$handle = @fopen("/tmp/inputfile.txt", "r");

if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
// do your operation for searching here
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
0