0

マイページでは、ユーザーは.phpスクリプトで開いたリストから参加したいコースのリストを選択できます。ユーザーが選択する選択肢は、courses[]と呼ばれるチェックボックスの配列に設定されます。Result.phpの1つである、選択された選択肢はRegExを介して送信され、コース名と各コースに必要な時間が抽出されます。コース名は、毎週必要な合計時間を表示するために時間を合計した場合にのみ出力されます。

私の問題は、すべての構文を修正したのですが、printf形式を呼び出しても何も返されません。var_dump($ courses)と($ courseLine)を試しましたが、NULLとNULLになりました。Registration.phpに論理エラーがあると思いますが、どこにあるのかわかりません。 以下は私のResult.phpで、コースリストのテキストファイルのサンプルを含めます

<table><tr><th>Courses</th><th>hours per Week</th></tr>
<?php
                $courses = $_GET['courses'];
                $courseHoursRegEx = "/\s[0-9]{1,2}\shrs/w/";//needs work
                $courseNameRegEx = "/[a-zA-Z]{3}[0-9]{4}[A-Z]{0,1}\s?/[a-zA-Z]{3,40}/";

    function GetCourseHours($couseLine)
    {
        if(!preg_match($courseHoursRegEx, $courseLine))
            {
                return $courseHour;
            }
        $totalHours += $courseHour;
    }
    function GetCourseName($courseLine)
    {
        if(!preg_match($courseNameRegEx, $courseLine))
            {
                return $courseInfo;
            }
    }
                foreach($courses as $course)
                        {
                            $theCourse = GetCourseName($course);
                            $theHours = GetCourseHours($course);
                        }
                for($i = 1; $i <= $courses; ++$i)
                {
                    printf("<tr><td>\%</td><td>\%</td></tr>", $theCourse, $theHours);
                }
?>
                <tr>
                <th>Total Hours</th><td><?php echo $totalHours ?>        </td></tr>
                </table>

これが私の開始ページなので、どの値が機能するかがわかります(スクリプトの長さのため、検証関数は含めませんでした)。

    </table>
<?php 
    $courseFile = fopen("CourseList.txt", "r");
    $courseHoursRegEx = "/\s[0-9]{1,2}\shrs/w/";
    $courseNameRegEx = "/[a-zA-Z]{3}[0-9]{4}[A-Z]{0,1}\s?/[a-zA-Z]{3,40}/";

    while(!feof($courseFile))
        {
            $courseLine = fgets($courseFile);
            echo "<input type='checkbox' name='courses[]' value='$courseLine'/> $courseLine <br />";
        }
        fclose($courseFile);
    function GetCourseHours($courseLine)
    {
        if(!preg_match($courseHoursRegEx, $courseLine))
            {
                return $courseLine;
            }
    }
    function GetCourseName($courseLine)
    {
        if(!preg_match($courseNameRegEx, $courseLine))
            {
                return $courseLine;
            }
    }
?>

これは、コース情報を含むテキストファイルのサンプルです。

CON8101 Residential Building/Estimating 16 hrs/w 
CON8411 Construction Materials I 4 hrs/w 
CON8430 Computers and You 4 hrs/w 
MAT8050 Geometry and Trigonometry 4 hrs/w 
SAF8408 Health and Safety 5 hrs/w 
4

2 に答える 2

0

質問に具体的に答えることはしませんが、ファイルの各行で次の正規表現を使用してみてください。

preg_match('/(?P<courseid>[A-Z0-9]+) (?P<coursename>.*) (?P<coursehours>\d+) hrs/',$text,$matches);

$matchesこれにより、この場合は配列が作成され、要素をより詳細に参照できます。

Array
(
    [0] => CON8101 Residential Building/Estimating 16 hrs
    [courseid] => CON8101
    [1] => CON8101
    [coursename] => Residential Building/Estimating
    [2] => Residential Building/Estimating
    [coursehours] => 16
    [3] => 16
)

これにより、コードと加算関数が大幅に簡素化されます。

于 2012-09-28T20:38:55.103 に答える
0

=+有効なphp演算子ではありません+=。数値を使用している+=場合は、文字列がを使用している場合に試してください.=。それがうまくいくことを願っています。

于 2012-09-29T02:11:16.727 に答える