使用php浏览txt文件,搜索并显示特定内容

时间:2013-05-07 13:42:15

标签: php

我创建了一个带有文本字段的简单表单,当我提交一个按钮时,它将所有文本字段值都转换为.txt文件。以下是.txt文件内容的示例:

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

第一行和最后一行----仅用于分隔数据。 ----之后的第一行是question,底部分隔符(1)之前是true answerquestiontrue answer之间的所有值是false answers

我现在想要做的是分开呼出questionfalse 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;
}

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

2 个答案:

答案 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);