Как извлечь конкретный текст из текстового файла в php? - PullRequest
0 голосов
/ 05 июля 2018

У меня проблемы с извлечением конкретного текста из текстового файла. Я пробовал много разных способов, таких как использование fopen или файла для открытия файла, но это не позволяет мне использовать любые строковые функции. Поэтому я решил использовать 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
....

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

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

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

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

$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);
0 голосов
/ 05 июля 2018

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