1

我用文本字段制作了一个简单的表单,当我提交一个按钮时,它会将所有文本字段值写入一个 .txt 文件。以下是 .txt 文件内容的示例:

-----------------------------
How much is 1+1
3
4
5
1
-----------------------------

第一行和最后一行----只是用来分隔数据。之后的第一行----question,底部分隔符 (1) 之前的第一行是, 和 之间的true answer所有值都是。questiontrue answerfalse answers

我现在要做的是分别回显question,false answerstrue 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;
}

我认为这可能有效,但还不确定。

4

2 回答 2

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]=>'--------------'
)
于 2013-05-07T13:53:11.563 回答
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);
于 2013-05-07T14:11:35.007 回答