0

こんにちはみんな私はいつかこれをやろうとしてきました。これについてどうすればよいかについての洞察を教えてください。質問と、各要素の間にスペースバーを使用して配置されたそれぞれの多肢選択式の回答を含むテキスト ファイルがあります。テキストファイルの行を読み取って配列に入れることができました。しかし、達成が困難であることが判明したのは、すべての要素を html フォーム要素に配置する方法です。これらは私のコードです:

テキストファイル:

番号 質問 (a) (b) (c) (d) 1 スパイラル モデルの最も重要な機能は要件分析です。危機管理。品質管理。構成管理。2 結合の最悪のタイプはデータ結合です。コントロールカップリング。スタンプカップリング。コンテンツカップリング。3 障害ベースのテスト手法の 1 つに単体テストがあります。ベータテスト。ストレステスト。突然変異テスト。4 障害シミュレーション テスト手法は、Mutation testing Stress testing Black box testing White box testing 5 RS は White box testing の仕様とも呼ばれます Stress testing Integrated testing Black box testing

テキスト ファイルを読み取るページ:

`html>
<head>
<title>read</title>
</head>
<body>
<b><u> QUESTIONS AND ANSWERS QUIZ</u></b <br /> 
<p>
<?php
$openFile = fopen("questionandanswers.txt", "r") or exit ("unable to open the text       file");
$fileContents = fread($openFile, filesize("questionandanswers.txt"));
fclose($openFile);
$delimiter = "  ";
$myArray = explode($delimiter, $fileContents);
print_r($myArray);
?>
</p>
</body>
</html>`

print_r には次のように表示されます。

配列 ( [0] => 数値 [1] => 質問 [2] => (a) [3] => (b) [4] => (c) [5] => (d) 1 [6] => スパイラル モデルの最も重要な機能は要件分析です. [7] => リスク管理. [8] => 品質管理. [9] => 構成管理. 2 [10] => 最悪のタイプの結合は [ 11] => データの結合 [12] => コントロールの結合 [13] => スタンプの結合 [14] => コンテンツの結合 3 [15] => フォールト ベースのテスト手法の 1 つに [16] =>単体テスト. [17] => ベータ テスト. [18] => ストレス テスト. [19] => 突然変異テスト. 4 [20] => 障害シミュレーション テスト手法は [21] => 突然変異テスト [22] = > ストレス テスト [23] => ブラック ボックス テスト [24] => ホワイト ボックス テスト 5 [25] => RS は [26] の仕様としても知られている => ホワイト ボックス テスト [27] =>ストレステスト [28] => 統合テスト [29] => ブラックボックステスト )

4

2 に答える 2

0

セパレータとしてスペースをexplode()使用しているため、各単語を配列要素として取得しています。explode()指定した文字を使用し、その文字に遭遇するたびに文字列を分割します。

データ (ファイル) にはパターンがありません。したがって、テキストにいくつかのルールを確立する必要があります。そうしないと、必要な情報を分離できなくなります。

いくつかのルールを確立するためにテキストを変更しました。

  1. 質問はコロン (:) で終了します。
  2. 質問の番号を区切り記号として使用するため、最後のものを除くすべての回答はドット (.) で終了します。
  3. 質問または回答に数字 [0-9] が含まれていないか、正規表現が混乱します。

これは、テキストを機能させるために手動で変更した結果のテキストです。

$string = 'Number Question (a) (b) (c) (d) 1 The most important feature of spiral model is: requirement analysis. risk management. quality management. configuration management 2 The worst type of coupling is: Data coupling. control coupling. stamp coupling. content coupling 3 One of the fault base testing techniques is: unit testing. beta testing. Stress testing. mutation testing 4 A fault simulation testing technique is: Mutation testing. Stress testing. Black box testing. White box testing 5 RS is also known as: specification of White box testing. Stress testing. Integrated testing. Black box testing';

解決策: その後、いくつかのコードを使用して情報を分離できます。

<html>
    <head>
    <title>read</title>
    </head>
    <body>
        <b><u> QUESTIONS AND ANSWERS QUIZ</u></b> <br />
<?php
$openFile = fopen("questionandanswers.txt", "r") or exit ("unable to open the text       file");
$string = fread($openFile, filesize("questionandanswers.txt"));

//Regex to get from the first number to the string's end, so we ignore the Number Question... bit;
preg_match('/\d.*/', $string, $match);

//We get all the strings starting with a number until it finds another number (which will be the beginning of another question;
preg_match_all('/\d\D*/', $match[0], $results);

$qas = array(); // We prepare an array with all the questions/answers
foreach($results[0] as $result){
    //Separating the answer from the string with all the answers.
    list($question, $all_answers) = explode(':', $result);

    //Separating the different answers
    $answers_array = explode('.', $all_answers);

    //Stuffing the question and the array with all the answers into the previously prepared array;
    $qas[] = array('question' => $question, 'answers' => $answers_array);
}

//Looping through the array and outputting all the info into a form;
foreach($qas as $k => $v){
    echo "<label>{$v['question']}</label><br/>";
    echo "<select>";

    //we loop through $v['answers'] because its an array within the array with all the answers.
    foreach($v['answers'] as $answer){
        echo "<option>$answer</option>";//the output
    }
    echo "</select>";
    echo "<br/><br/>";
}

?>
    </body>
</html>

すべてのコメントのために複雑に見えますが、実際には 20 行未満のテキストです。

ここで出力を確認できます: output


メモ これは練習のためだけに行ったものですが、次回はもっと調べて、具体的な質問をしてみてください。

于 2013-04-18T13:23:18.717 に答える