PHP读取包含问答的txt文件并创建数组或对象?

我在moodle中看到了这个功能,他们上传 .txt 文件并解析数据并创建问题库。有些问题也有三个选项

样本 :-

What is php?


A. Php is a language.


B. Php creates HTML.


C. Php is fun.


D. none of these.


ANSWER: D




Which is YII-2?


A. Framework.


B. Tool.


C. None of these


ANSWER: A


到目前为止,我已经尝试过解析它,但我不知道要实现批量上传到底要做什么。


txt_file    = file_get_contents('path/to/file.txt');

$rows        = explode("\n", $txt_file);

array_shift($rows);


foreach($rows as $row => $data)

{


}

我正在尝试获取的数组


[

[

'question' => 'Php is a language.',

'options' => [

             'A' =>  'Php is a language.',

             'B' => 'Php creates HTML.',

             'C' => 'Php is fun.',

             'D' => 'none of these.'

             ],

'answer' => 'D'

],

.....

]

示例文件:-文件代码fbSObnlghQkqroEk4lrQ



婷婷同学_
浏览 80回答 1
1回答

元芳怎么了

尝试(?mi)^(?!\h*(?:[A-Z]\h*\.|ANSWER\h*:))\h*(?<question>\S.*?)\??\h*\s*^\h*A\h*\.\h*(?<A>.*?)\h*\s*(?:^\h*B\h*\.\h*(?<B>.*?)\h*(?:\s*^\h*C\h*\.\h*(?<C>.*?)\h*(?:\s*^\h*D\h*\.\h*(?<D>.*?)\h*(?:\s*^\h*E\h*\.\h*(?<E>.*?)\h*)?)?)?)?\s*^\h*ANSWER\h*:\h*(?<answer1>[A-F])(?:\h*,\h*(?<answer2>[A-F]))?循环匹配,从部分创建单个数组,附加到更大的数组。不需要“选项”,但匹配后可以从组 AE 创建子数组,然后添加到单个数组。重复下一场比赛。php_demo<?php// Your code here!$regex = '~(?mi)^(?!\h*(?:[A-Z]\h*\.|ANSWER\h*:))\h*(?<question>\S.*?)\??\h*\s*^\h*A\h*\.\h*(?<A>.*?)\h*\s*(?:^\h*B\h*\.\h*(?<B>.*?)\h*(?:\s*^\h*C\h*\.\h*(?<C>.*?)\h*(?:\s*^\h*D\h*\.\h*(?<D>.*?)\h*(?:\s*^\h*E\h*\.\h*(?<E>.*?)\h*)?)?)?)?\s*^\h*ANSWER\h*:\h*(?<answer1>[A-F])(?:\h*,\h*(?<answer2>[A-F]))?~'; // Declare a string $nameString = 'What is php?A. Php is a language.B. Php creates HTML.C. Php is fun.D. none of these.ANSWER: DLinux isA. A Graphic SoftwareB. A DriverC. A Line Controller SoftwareD. An Operating SystemANSWER: DWhich feature helps in compress and contain the collection of files in to oneA. ZipB. ShortcutC. IconD. ExtractANSWER: AWhich is YII-2?A. Framework.B. Tool.C. None of theseANSWER: A,B'; // Use preg_match_all() function$QA = []; // All questionsif ( preg_match_all($regex, $nameString, $matches, PREG_SET_ORDER) ) {    foreach ($matches as $match) {       $qa = [];   // Single question       $qa['question'] = $match['question'];       $qa['A'] = $match['A'];       if ( array_key_exists( 'B', $match ) && $match['B'] )  $qa['B'] = $match['B'];       if ( array_key_exists( 'C', $match ) && $match['C'] )  $qa['C'] = $match['C'];       if ( array_key_exists( 'D', $match ) && $match['D'] )  $qa['D'] = $match['D'];       if ( array_key_exists( 'E', $match ) && $match['E'] )  $qa['E'] = $match['E'];       $qa['answer1'] = $match['answer1'];       if ( array_key_exists( 'answer2', $match ) && $match['answer2'] )  $qa['answer2'] = $match['answer2'];       array_push( $QA, $qa );    }} else {     echo("Could not find a single question");  } print_R ( $QA);?>输出Array(    [0] => Array        (            [question] => What is php            [A] => Php is a language.            [B] => Php creates HTML.            [C] => Php is fun.            [D] => none of these.            [answer1] => D        )    [1] => Array        (            [question] => Linux is            [A] => A Graphic Software            [B] => A Driver            [C] => A Line Controller Software            [D] => An Operating System            [answer1] => D        )    [2] => Array        (            [question] => Which feature helps in compress and contain the collection of files in to one            [A] => Zip            [B] => Shortcut            [C] => Icon            [D] => Extract            [answer1] => A        )    [3] => Array        (            [question] => Which is YII-2            [A] => Framework.            [B] => Tool.            [C] => None of these            [answer1] => A            [answer2] => B        ))
打开App,查看更多内容
随时随地看视频慕课网APP