У меня есть список курсов и часов, которые они требуют для студентов, чтобы пройти их. Курсы следующие:
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
Я использовал это регулярное выражение, чтобы извлечь название курса и количество часов, которое каждый курс занимает каждую неделю. Есть более 4 курсов, 4 приведены выше. Курсов может быть до 50.
$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}/";
И применил следующую функцию (не уверен, что на 100% прав) для извлечения строк RegEx. Используя переменную $courseLine, я сохранил строку каждой строки из текстового документа, который я открыл ранее. Он отслеживает общее количество часов, извлеченных из строки.
$courses – это набор флажков, которые пользователь устанавливает в разделе HTML
$totalHours += GetCourseHours($courseLine);
function GetCourseHours($couseLine)
{
if(!preg_match($courseHoursRegEx, $courseLine))
{
return $courseLine;
}
}
function GetCourseName($courseLine)
{
if(!preg_match($courseNameRegEx, $courseLine))
{
return $courseLine;
}
}
Я использовал цикл foreach для вывода всех выбранных курсов для сортировки в таблице.
foreach($courses as $course)
{
$theCourse = GetCourseName($course);
$theHours = GetCourseHours($course)
}
Изменить: выходной код
for($i = 1; $i <= $courses; ++$i)
{
printf("<tr><td>\$%.2f</td><td>\$%.2f</td></tr>", $theCourse, $theHours);
}
Я не знаю, как вывести то, что у меня есть, в динамическую таблицу, упорядоченную по названию курса и часам для каждого курса. Я не могу запустить свою страницу, я не могу найти никаких синтаксических ошибок, я боялся, что это моя логика.
$matches[1]
сам по себе является массивом всех названий курсов.$matches[2]
сам по себе является массивом всех часов. Итак, как вы говорите,$matches[1][1]
даст вам имя и$matches[2][1]
соответствующие часы. 30.09.2012$str
, который представляет собой многострочную строку всех ваших курсов (всего одного курса; в этом случае вам даже не нуженpreg_match_all
, а другой цикл). Вы можете вызвать$matches = array();
заранее, но в PHP это не обязательно. Так что просто вызовите функциюpreg_match_all
с вашей строкой курса, как я ее дал, а затем попробуйтеvar_dump($matches);
после этого. 30.09.2012