Как извлечь конкретный текст из текстового файла на php?

у меня возникают трудности с извлечением определенного текста из текстового файла. Я пробовал много разных способов, например, использовать fopen или file для открытия файла, но это не позволяет мне использовать какие-либо строковые функции. Поэтому я решил использовать file_get_contents и извлечь нужный текст с помощью строковых методов следующим образом:

    <?php  

        $data = [];  
        $file =   
        file_get_contents("data.txt", 0, NULL, 148);  
             list($id, $data_names) = preg_split('[:]', $file);  
             array_push($names, $data_names);  
             echo $emails[0];  

    ?>  

Я использовал preg_split, чтобы разделить текст, который я хочу, на определенный символ (:) и поместил данные в массив. Это сработало для первой строки, но я не знаю, как это сделать для остальных строк, я пробовал цикл while, но он просто заканчивается бесконечным циклом.

data.txt в следующем формате:

1:hannah.Smith
2:Bob.jones
3:harry.white
....

Мы будем очень благодарны за любые предложения о том, как это сделать или лучше.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
1 627
2

Ответы 2

Для этого есть функция. Это не CSV, но измените разделитель. Чтобы просто получить имена:

$handle = fopen("data.txt", "r"));
while(($line = fgetcsv($handle, 0, ":")) !== FALSE) {
    $names[] = $line[1];
}

Чтобы проиндексировать имена по идентификаторам:

while(($line = fgetcsv($handle, 0, ":")) !== FALSE) {
    $names[$line[0]] = $line[1];
}

Чтобы получить идентификаторы и имена в многомерном массиве, используйте:

while(($names[] = fgetcsv($handle, 0, ":")) !== FALSE) {}

Ну, вы не назначаете возвращаемое значение file_get_contents переменной. Таким образом, содержимое файла не используется.

Вы можете использовать функцию файл. Он считывает содержимое файла в массив. Каждый элемент массива представляет собой строку в файле. Затем вы можете перебрать массив и проанализировать каждую строку. Например:

$names = array();
$file  = file_get_contents("data.txt");

for ($count = 0; $count < count($file); $count++) {
    list($id, $name) = $file[$count];
    $names[]         = $name;
}

/** print the contents of the names array */
print_R($names);

Другие вопросы по теме