Чтение файла PHP

У меня есть текстовый файл с именем source.txt и имеет следующее содержимое.

Name = "john"
image = "/path"
email = "[email protected]"

and some other data

Я читаю и повторяю весь контент. Но мне нужны конкретные данные и присваиваются переменной. если мне нужно имя. Затем прочитайте файл, выберите john и назначьте переменной

если в каждой строке есть только 1 данные, вы можете использовать fget() и explode(), чтобы разделить строку на ключ и значения

WolfCode 05.04.2022 14:18

какой-то файл содержит name = "john" | изображение = "/путь"

Madhan kumar 05.04.2022 14:19

Если все поля разделены символом |, это идеальное использование для explode(). Или вы можете использовать fgetcsv() и указать правильный символ-разделитель. После того, как вы разделите их, вы можете легко разобрать их на переменные и значения.

droopsnoot 05.04.2022 14:21

Как присвоить переменной

Madhan kumar 05.04.2022 14:23

Используйте оператор присваивания.

Stephen C 05.04.2022 14:24

Если ваши файлы имеют несколько возможных форматов, вам нужно либо знать, какие из них какие, либо иметь какой-то способ программно идентифицировать конкретный формат из самого содержимого файла.

RiggsFolly 05.04.2022 14:26

или легко получить файл формата Json, и с json_decode() u работа сделана

WolfCode 05.04.2022 14:30

Пожалуйста, включите в свой вопрос все репрезентативные форматы данных.

Markus AO 05.04.2022 14:53
Стоит ли изучать 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 и хотите разрабатывать...
2
8
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот пример мини-кода

test.txt :

Name = "john"
image = "/path"
email = "[email protected]"

пример сценария

<?php
$data_array = array();
$data_array_2 = array();
$fp = @fopen("./test.txt", "r");
if ($fp) {
    while (($line = fgets($fp)) !== false) {
        array_push($data_array,explode(" = ",$line));
        list($key,$val) = explode(" = ",$line);
        $data_array_2[$key] = $val;
    }
}
fclose($fp);
echo "<pre>";
var_dump($data_array);
echo "</pre>";
echo "<pre>";
var_dump($data_array_2);
echo "</pre>";
?>

Это оставит конечные пробелы в ключах, начальные пробелы в значениях и возможные разрывы строк. Обрезка поможет.

Markus AO 05.04.2022 14:52

Вы можете использовать встроенную функцию parse_ini_file, чтобы разобрать его как файл .ini.

Пример.

Файл test.txt:

Name = "john"
image = "/path"
email = "[email protected]"

Код (например, .ini):

$ini_array = parse_ini_file("test.txt");
print_r($ini_array);

// Result
// Array
// (
//    [Name] => john
//    [image] => /path
//    [email] => [email protected]
// )

// Import variables into the current symbol table from an array
// Do not use extract() on untrusted data, like user input (e.g. $_GET, $_FILES).
extract($ini_array);
echo $Name; // john

Обновлять.

Файл test2.txt:

name = "john" | image = "/path"
name = "john2" | image = "/path2"

Очень упрощенный код (анализируется как необработанный файл со строками):

function parse_raw_file($filepath) {
    
    $result = [];
    $file = file($filepath);
    
    if (count($file) > 0) {

        foreach($file as $k => $v) {

            $parts = explode("|", $v);
            
            foreach($parts as $part) {

                $value = explode(" = ", $part);
                $key = trim($value[0]);
                $result[$k][$key] = trim($value[1]);

            }

        }

    }

    return $result; 

}

$array = parse_raw_file("test2.txt");
print_r($array);

// Array
// (
//    [0] => Array
//        (
//            [name] => "john"
//            [image] => "/path"
//        )
//
//    [1] => Array
//        (
//            [name] => "john"
//            [image] => "/path2"
//        )
//
//)

// Assign variables 

foreach ($array as ["name" => $name, "image" => $image]) {
    echo "name: $name, image: $image\n";
}

// name: "john", image: "/path"
// name: "john", image: "/path2" 

А если некоторые файлы отформатированы как Name = "john" | image = "/path" | email = "[email protected]" , как предложено в вопросе?

RiggsFolly 05.04.2022 14:40

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