Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $HostName = "hostname";
- $HostUser = "user";
- $HostPass = "pass";
- $DatabaseName = "db";
- $conn = new mysqli($HostName, $HostUser, $HostPass, $DatabaseName);
- if ($conn->connect_error) {
- die("Connection failed: " . $conn->connect_error);
- }
- $page = file_get_contents("test.txt");
- $courses = [];
- $doc = new DOMDocument();
- $doc->recover = true;
- $doc->strictErrorChecking = false;
- // Open DB then delete DB
- // @ hides the warnings
- @$doc->loadHTML( $page );
- $tr_list = $doc->getElementsByTagName( 'tr' );
- if ( $tr_list->length > 0 ) {
- foreach ( $tr_list as $tr ) {
- $tr_id = $tr->getAttribute( 'id' );
- if ( substr( $tr_id, 0, 4 ) == 'crn_' ) {
- $course = [
- 'id' => $tr_id,
- 'cs_id' => '',
- 'link' => '',
- 'restrictions' => false,
- 'prerequisites' => false,
- 'online' => false,
- 'hybrid' => false,
- 'crn' => '',
- 'title' => '',
- 'text' => '',
- 'credits' => '',
- 'meetings' => [],
- 'part_of_term' => '',
- 'instructors' => [],
- 'capacity' => 0,
- 'seats_avail' => 0,
- ];
- if ( $tr->childNodes->length > 0 ) {
- foreach ( $tr->childNodes as $c => $td ) {
- // Using switch, will need adjusted if the returned table ever modified....
- switch ( $c ) {
- case 0:
- // BEGIN: TD that will lists course/section & options
- $a_list = $td->getElementsByTagName( 'a' );
- if ( $a_list->length > 0 ) {
- foreach ( $a_list as $a ) {
- $course['cs_id'] = trim( $a->textContent );
- $course['link'] = $a->getAttribute( 'href' );
- break;
- }
- }
- $div_list = $td->getElementsByTagName( 'div' );
- if ( $div_list->length > 0 ) {
- foreach ( $div_list as $div ) {
- $img_list = $div->getElementsByTagName( 'img' );
- if ( $img_list->length > 0 ) {
- foreach ( $img_list as $img ) {
- $title = trim( $img->getAttribute( 'title' ) );
- if ( $title == 'restrictions' ) {
- $course['restrictions'] = true;
- } elseif ( $title == 'prerequisite required' ) {
- $course['prerequisites'] = true;
- }
- }
- }
- }
- }
- break; // END: TD that will list options
- case 1:
- // CRN Number
- $course['crn'] = trim( $td->textContent );
- break;
- case 2:
- // BEGIN: TD that will lists types (Online/Hybrid)
- $img_list = $td->getElementsByTagName( 'img' );
- if ( $img_list->length > 0 ) {
- foreach ( $img_list as $img ) {
- $title = strtolower( trim( $img->getAttribute( 'title' ) ) );
- if ( $title == 'online course' ) {
- $course['online'] = true;
- } elseif ( $title == 'hybrid course' ) {
- $course['hybrid'] = true;
- }
- }
- }
- break; // END: TD that will lists types (Online/Hybrid)
- case 3:
- // BEGIN: Course Title/Text
- $p_list = $td->getElementsByTagName( 'p' );
- if ( $p_list->length > 0 ) {
- foreach ( $p_list as $p ) {
- $class = trim( $p->getAttribute( 'class' ) );
- if ( $class == 'course_title' ) {
- $course['title'] = trim( $p->textContent );
- } elseif ( $class == 'course_text' ) {
- $course['text'] = trim( $p->textContent );
- }
- }
- }
- break; // END: Course Title/Text
- case 4:
- // Number of credits
- $course['credits'] = trim( $td->textContent );
- break;
- case 5:
- // BEGIN: Course Meeting
- $meeting_list = $td->getElementsByTagName( 'span' );
- if ( $meeting_list->length > 0 ) {
- foreach ( $meeting_list as $meeting ) {
- $meeting_class = trim( $meeting->getAttribute( 'class' ) );
- if ( $meeting_class == 'meeting' ) {
- $meeting_set = [
- 'meeting_day' => '',
- 'meeting_time' => '',
- 'start_date' => '',
- 'end_date' => '',
- 'location' => ''
- ];
- $abbr_list = $meeting->getElementsByTagName( 'abbr' );
- if ( $abbr_list->length > 0 ) {
- // BEGIN: Meeting Days of Week & Location
- foreach ( $abbr_list as $abbr ) {
- $class = trim( $abbr->getAttribute( 'class' ) );
- switch ( $class ) {
- case "meeting-day":
- $meeting_set['meeting_day'] = trim( $abbr->textContent );
- break;
- case "location":
- $meeting_set['location'] = trim( $abbr->textContent );
- break;
- }
- } // END: Meeting Days of Week & Location
- }
- $span_list = $meeting->getElementsByTagName( 'span' );
- if ( $span_list->length > 0 ) {
- // BEGIN: Meeting Times & Dates
- foreach ( $span_list as $span ) {
- $class = trim( $span->getAttribute( 'class' ) );
- switch ( $class ) {
- case "meeting-time":
- $meeting_set['meeting_time'] = trim( $span->textContent );
- break;
- case "meeting-start-date":
- $meeting_set['start_date'] = trim( $span->textContent );
- break;
- case "meeting-end-date":
- $meeting_set['end_date'] = trim( $span->textContent, "- \t\n\r\0\x0B" );
- break;
- }
- } // END: Meeting Times & Dates
- }
- $course['meetings'][] = $meeting_set;
- }
- }
- }
- break; // END: Course Meetings
- case 6:
- // Part of Term
- $course['part_of_term'] = trim( $td->textContent );
- break;
- case 7:
- // BEGIN: Get Instructor Name / Link (or just note if none)
- $a_list = $td->getElementsByTagName( 'a' );
- $inst_set = [];
- if ( $a_list->length > 0 ) {
- foreach ( $a_list as $a ) {
- $course['instructors'][] =
- [
- 'name' => trim( $a->textContent ),
- 'primary' => ( $a->getAttribute( 'data-primary-instructor' ) == 'Y' ),
- 'email' => substr( $a->getAttribute( 'href' ), 7 )
- ];
- }
- }
- if ( count( $course['instructors'] ) == 0 ) {
- // No instructor, grab note
- $span_list = $td->getElementsByTagName( 'span' );
- if ( $span_list->length > 0 ) {
- foreach ( $span_list as $span ) {
- $class = trim( $span->getAttribute( 'class' ) );
- if ( $class == 'instructor' ) {
- $course['instructors'][] =
- [
- 'name' => trim( $span->textContent ),
- 'email' => false
- ];
- break;
- }
- }
- }
- }
- break; // END: Get Instructor Name / Link (or just note if none)
- case 8:
- // Capacity
- $course['capacity'] = trim( $td->textContent );
- break;
- case 9:
- // Seats Available
- $course['seats_avail'] = trim( $td->textContent );
- break;
- }
- }
- }
- $courses[] = $course;
- foreach ($courses as $key=>$course)
- {
- if (is_array($course)) {
- foreach($course as $key2=>$course2) {
- print($course2);
- print ("\n");
- }
- } else {
- // handle everything else here
- }
- }
- /*
- foreach ($courses as $course)
- {
- // INSERT: run query to insert
- }
- $courses[] = $course;
- If (is_array($course)) {
- Foreach($course as $key2=>$course2) {
- print($course2);
- print ("\n");
- }
- } else {
- // handle everything else here
- }
- */
- //$courses[] = $course;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement