我创建了一个带有文本字段的简单表单,当我提交一个按钮时,它将所有文本字段值都转换为.txt文件。以下是.txt文件内容的示例:
-----------------------------
How much is 1+1
3
4
5
1
-----------------------------
第一行和最后一行----
仅用于分隔数据。 ----
之后的第一行是question
,底部分隔符(1)之前是true answer
,question
和true answer
之间的所有值是false answers
。
我现在想要做的是分开呼出question
,false answers
和true answer
:
echo $quesiton;
print_r ($false_answers); //because it will be an array
echo $true answer;
我认为解决方案是strpos
,但我不知道如何按照我想要的方式使用它。我可以这样做吗? :
Select 1st line (question) after the 1st seperator
Select 1st line (true answer) before the 2nd seperator
Select all values inbetween question and true answer
请注意,我只展示了一个例子,.txt文件中有很多这些问题与-------分开。
使用strpos来解决这个问题我是否正确?有什么建议吗?
编辑: 找到了一些功能:
$lines = file_get_contents('quiz.txt');
$start = "-----------------------------";
$end = "-----------------------------";
$pattern = sprintf('/%s(.+?)%s/ims',preg_quote($start, '/'), preg_quote($end, '/'));
if (preg_match($pattern, $lines, $matches)) {
list(, $match) = $matches;
echo $match;
}
我认为这可能会有效,但还不确定。
答案 0 :(得分:1)
你可以试试这个:
$file = fopen("test.txt","r");
$response = array();
while(! feof($file)) {
$response[] = fgets($file);
}
fclose($file);
这样你就会得到响应数组:
Array(
[0]=>'--------------',
[1]=>'How much is 1+1',
[2]=>'3',
[3]=>'4',
[4]=>'2',
[5]=>'1',
[6]=>'--------------'
)
答案 1 :(得分:0)
您可以尝试这样的事情:
$lines = file_get_contents('quiz.txt');
$newline = "\n"; //May need to be "\r\n".
$delimiter = "-----------------------------". $newline;
$question_blocks = explode($delimiter, $lines);
$questions = array();
foreach ($question_blocks as $qb) {
$items = explode ($newline, $qb);
$q['question'] = array_shift($items); //First item is the question
$q['true_answer'] = array_pop($items); //Last item is the true answer
$q['false_answers'] = $items; //Rest of items are false answers.
$questions[] = $q;
}
print_r($questions);