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






Для этого есть функция. Это не 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);