我有数据文件。每一行都有作者/作者的名字......如下所示:
"Giacometti, Jasminka"; "Mazor Jolic, Slavica"; "Josic, Djuro";
"Hoffmeister, Karin M"; "Grozovsky, Renata"; "Jurak Begonja, Antonija"; "Hartwig, John H";
"Jakopovic, Boris"; "Kraljevic Pavelic, Sandra"; "BelScak-Cvitanovic, Ana"; "Harej, Anja"; "Jakopovich, Ivan";
例如,对于第一行:
"Giacometti, Jasminka"; "Mazor Jolic, Slavica"; "Josic, Djuro";
我需要得到这个并将其写在另一个文件中:
"Giacometti, Jasminka"; "Mazor Jolic, Slavica";1
"Giacometti, Jasminka"; "Josic, Djuro";1
"Mazor Jolic, Slavica"; "Josic, Djuro";1
我怎么能在PHP中做到这一点?我尝试了获取数组中的每一行,但后来我不知道如何从该行中分割数据。
$handle = @fopen("datas.txt", "r");
$listA = array();
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
$listA[] = $buffer;
}
谢谢。
答案 0 :(得分:3)
首先从包含数据的文件中读取内容内容作为完整的一个完整字符串,然后使用行尾字符展开该字符串,因此每个数组元素现在将包含一行数据:
$data = file_get_contents("data.txt"); //data.txt is the file that contains rows of data
$authArr = explode(PHP_EOL, $data ); //this array contains all the rows in it
您现在可以使用此$authArr
通过在每行中附加一个新行字符来写入另一个文件,即您将写入该文件的每个数组元素。
答案 1 :(得分:0)
foreach ( $$listA as $key)
{
$part = explode(";",$key);
}
使用;
作为分隔符拆分字符串。您必须丢弃$part
数组的最后一个元素,因为它将是''
。
这里你只有三个数组元素。因此,您不需要循环来进行置换。如果您有更多号码,请使用permutations by loop。
答案 2 :(得分:0)
我不确定你想对作者做些什么,但这会将每一行分成一组作者;
<?php
$source_string = file_get_contents('source.txt'); // Load the source file.
$source_array = explode(PHP_EOL, $source_string); // Create an array of one element per line.
// Iterate over the source array.
foreach($source_array as $line) {
$trimmed = rtrim($line, ';'); // Trim the semicolon from the end of the line.
$array_of_authors = explode('; ', $trimmed); // Explode the line into an array of one element per author.
$output = print_r($array_of_authors, true);
echo "<div>Line: {$line}</div>";
echo "<xmp>{$output}</xmp>";
}
?>
上面产生的输出就是这样开始的;
Line: "Giacometti, Jasminka"; "Mazor Jolic, Slavica"; "Josic, Djuro";
Array
(
[0] => "Giacometti, Jasminka"
[1] => "Mazor Jolic, Slavica"
[2] => "Josic, Djuro"
)