У меня есть текстовый файл с именем source.txt и имеет следующее содержимое.
Name = "john"
image = "/path"
email = "[email protected]"
and some other data
Я читаю и повторяю весь контент. Но мне нужны конкретные данные и присваиваются переменной. если мне нужно имя. Затем прочитайте файл, выберите john и назначьте переменной
какой-то файл содержит name = "john" | изображение = "/путь"
Если все поля разделены символом |, это идеальное использование для explode(). Или вы можете использовать fgetcsv() и указать правильный символ-разделитель. После того, как вы разделите их, вы можете легко разобрать их на переменные и значения.
Как присвоить переменной
Используйте оператор присваивания.
Если ваши файлы имеют несколько возможных форматов, вам нужно либо знать, какие из них какие, либо иметь какой-то способ программно идентифицировать конкретный формат из самого содержимого файла.
или легко получить файл формата Json, и с json_decode() u работа сделана
Пожалуйста, включите в свой вопрос все репрезентативные форматы данных.






Вот пример мини-кода
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>";
?>
Это оставит конечные пробелы в ключах, начальные пробелы в значениях и возможные разрывы строк. Обрезка поможет.
Вы можете использовать встроенную функцию 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]" , как предложено в вопросе?
если в каждой строке есть только 1 данные, вы можете использовать
fget()иexplode(), чтобы разделить строку на ключ и значения