ตัวอย่างต่อไปนี้ เป็นโค้ด สำหรับการโหลด xml ไฟล์ จากเว็บข่าวสารต่างๆ หรือไฟล์ xml feed มาแสดง พร้อมทั้ง ทำการแบ่งหน้า รายการ ใน xml ไฟล์ ด้วย php
ตัวอย่าง https://www.ninenik.com/demo/php_show_page_xml.php
โค้ดตัวอย่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <?php //$url_feed = 'http://breakingnews.nationchannel.com/rss/breakhot.xml'; // ข่าวจำนวนมากสำหรับ ทดสอบ // ส่วนเริ่มต้นการใช้งานฟังก์ชัน curl ในการเรียกใช้ไฟล์ xml feed $ch = curl_init( $url_feed ); curl_setopt( $ch , CURLOPT_HEADER, false); curl_setopt( $ch , CURLOPT_RETURNTRANSFER, true); $get_content = curl_exec( $ch ); // เก็บรูปแบบข้อความ xml ไว้ในตัวแปร $get_content curl_close( $ch ); // สิ้นสุดการใช้งานฟังก์ชัน curl ในการเรียกใช้ไฟล์ xml feed // แปลงข้อความที่อยู่ในรูปแบบ xml เป็นตัวแปร object $parsed_xml = simplexml_load_string( $get_content ); // สามารถใช้ฟังก์ชัน simplexml_load_file() แทนการใช้งาน curl และ // simplexml_load_string() เพื่อแปลงจากไฟล์ xml feed เป็น object ได้เลย // $parsed_xml = simplexml_load_file($url_feed); // หาจำนวนรายการ feed ทั้งหมด // ถ้ามีจำนวนมาก สามารถกำหนดเอง เพื่อจำกัดการแสดงข้อมูลได้ $total = count ( $parsed_xml ->channel->item); // $total=20; // กรณีกำหนดเอง // จำนวนรายการที่ต้องการแสดง แต่ละหน้า $perPage = 2; // คำนวณจำนวนหน้าทั้งหมด $num_naviPage = ceil ( $total / $perPage ); // กำหนดจุดเริ่มต้น และสิ้นสุดของรายการแต่ละหน้าที่จะแสดง if (!isset( $_GET [ 'page' ])){ $s_key =0; $e_key = $perPage ; $_GET [ 'page' ]=1; } else { $s_key =( $_GET [ 'page' ]* $perPage )- $perPage ; $e_key = $perPage * $_GET [ 'page' ]; $e_key =( $e_key > $total )? $total : $e_key ; } // สร้างลิ้งค์เลือกหน้า for ( $i =1; $i <= $num_naviPage ; $i ++){ echo " || <a href=\"?page=" . $i . "\">Page $i</a>" ; } echo "<hr>" ; // แสดงรายการ for ( $indexFeed = $s_key ; $indexFeed < $e_key ; $indexFeed ++){ $numOrder = $indexFeed +1; echo $numOrder . "." . $parsed_xml ->channel->item[ $indexFeed ]->title. "<br>" ; echo '<strong>Description : </strong> ' . $parsed_xml ->channel->item[ $indexFeed ]->description. '<br/>' ; echo '<strong>Link :</strong> ' . $parsed_xml ->channel->item[ $indexFeed ]->link. "<br><hr>" ; } // แสดงหน้าปัจจุบัน echo "Page:" . $_GET [ 'page' ]; ?> |
สามารถนำไปประยุกต์ใช้งาน เพิ่มเติม เช่น การเพิ่มความเร็ว ในการโหลด xml ไฟล์ การเพิ่มลูกเล่น ด้วย ajax การปรับรูปแบบการแสดง ด้วย css หรือ อื่นๆ ต่อไปได้