2013-05-07 60 views
1

我做了一個簡單的形式與textfields,當我提交按鈕它wrties所有文本字段值到.txt文件。這裏是.txt文件內容的示例:導航通過txt文件與PHP,搜索和顯示特定內容

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

的第一個和最後一個行是有,只是單獨的數據。 之後的第一行是question,底部分離器之前(1)是true answer,並且questiontrue answer之間的所有值都是false answers

我想現在做的是回聲出questionfalse answerstrue answer,seperatly:

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; 
} 

我覺得這可能會奏效,目前還不能確定。

回答

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]=>'--------------' 
) 
+0

並沒有真正回答這個問題,但可以作爲它的開始。 – Brad 2013-05-07 13:53:56

+0

謝謝,我認爲這可能類似於我正在尋找的東西 – Edgar 2013-05-07 13:55:42

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