我不是最好的PHP,如果有人可以提供帮助,我将非常感激。基本上我需要解析数据源的每一行,并在每个“|”之间获取每一位信息 - 然后我可以将它添加到数据库中。我想我可以通过使用explode来处理从“|”之间获取信息,但是我需要一些帮助来解析文本文件中的每一行作为单数。事实上,为了使它更简单,我只需要它使用变量的每一行,我将使用textarea和表单向变量提交内容。任何帮助将不胜感激!
答案 0 :(得分:4)
您可以将文件读入一个行数组,并使用以下命令进行所有拆分:
$lines = file("filename");
foreach($lines as $line) {
$parts = explode("|", $line);
// do the database inserts here
}
如果你已经按照你所说的那样在变量中包含了所有文本(例如,使用类似于file_get_contents()的东西),你可以首先在\ n上爆炸,然后执行与上面相同的foreach语句。
答案 1 :(得分:2)
如果您正在读取textarea帖子,可以使用使用换行符作为分隔符的explode函数将变量中的每个“行”作为数组的新元素,然后你就可以爆炸了数组元素。
即。
$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah";
$lines = explode("\n", $sometext);
foreach($lines as $oneLine)
{
$lineElements[] = explode("|", $oneLine);
}
然后你有一个你的元素的二维数组。
如果您正在读取文件,则只需使用此处记录的文件功能:
http://us2.php.net/manual/en/function.file.php
将文件的每一行作为数组的元素。
答案 2 :(得分:1)
有一个现成的PHP解析库,可以自动检测CSV格式。
示例:
$reader = new Dfp_Datafeed_File_Reader();
$reader->setLocation('test.csv');
foreach ($reader AS $record) {
print_r($record);
}
答案 3 :(得分:0)
如果文件很小,您可以使用file() t将其读入数组,每个元素一行。
如果失败,请使用fgets()
循环读取文件$handle = fopen("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
答案 4 :(得分:0)
您可以使用explode来获取两者:
$myFile = "File.txt";
$fh = fopen($myFile, 'r');
$data = fread($fh);
fclose($fh);
$newLines = explode("\n",$data);
foreach($newLines as $s)
{
$parsed = explode("|",$s);
foreach($parsed as $item)
{
// do your db load here
}
}