การแยกข้อความ XML ด้วย PHP ตอนที่ 2
บทความก่อนหน้า จะเป็นการอ่าน XML ด้วย PHP ที่มีเพียง node เดียว แต่ในกรณีที่เอกสาร XML นั้นมีหลาย node เช่น RSS ทีี่อาจมีหลายข่าว การ parse XML ด้วย PHP ก็สามารถทำได้ง่ายๆ ด้วยการเปลี่ยนจาก การใช้ preg_match เป็น preg_match_all
ตัวอย่าง XML ที่มี address ถึง 2 รายชื่อครับ
การอ่านก็แค่เปลี่ยนจาก preg_match เป็น preg_match_all ครับ
สำหรับผลลัพท์ของ preg_match_all ที่ได้จะอยู่ในรูปที่แตกต่างจาก preg_match นะครับ สามารถทดสอบได้โดยการใช้ print_r() แสดงผลลัพท์ให้ดู
สำหรับตัวอย่างอื่นๆของการ parse XML สามารถดูได้จากโค้ดแสดงข่าว RSS ครับ ซึ่ง RSS ก็คือรูปแบบหนึ่งของ XML ครับ
ตัวอย่าง XML ที่มี address ถึง 2 รายชื่อครับ
<ADDRESS>
<NAME>Goragod Wiriya</NAME>
<COMPANY>Goragod.com</COMPANY>
<GENDER>male</GENDER>
<EMAIL>goragod@yahoo.com</EMAIL>
</ADDRESS>
<ADDRESS>
<NAME>สวัสดี ประเทศไทย</NAME>
<COMPANY>Google</COMPANY>
<GENDER>female</GENDER>
<EMAIL>info@gmail.com</EMAIL>
</ADDRESS>
การอ่านก็แค่เปลี่ยนจาก preg_match เป็น preg_match_all ครับ
<?php
$xml = file_get_contents( 'address.xml' ); // อ่านไฟล์ XML
preg_match_all('/<NAME>(.*?)<\/NAME>/isu',$xml,$name); // อ่าน NAME
// print_r($name);
echo '<br />name 1 :: '.$name[1][0];
echo '<br />name 2 :: '.$name[1][1];
preg_match_all('/<COMPANY>(.*?)<\/COMPANY>/isu',$xml,$company); // อ่าน COMPANY
echo '<br />company 1 :: '.$company[1][0];
echo '<br />company 2 :: '.$company[1][1];
preg_match_all('/<EMAIL>(.*?)<\/EMAIL>/isu',$xml,$email); // อ่าน EMAIL
echo '<br />email 1 :: '.$email[1][0];
echo '<br />email 2 :: '.$email[1][1];
?>
สำหรับผลลัพท์ของ preg_match_all ที่ได้จะอยู่ในรูปที่แตกต่างจาก preg_match นะครับ สามารถทดสอบได้โดยการใช้ print_r() แสดงผลลัพท์ให้ดู
สำหรับตัวอย่างอื่นๆของการ parse XML สามารถดูได้จากโค้ดแสดงข่าว RSS ครับ ซึ่ง RSS ก็คือรูปแบบหนึ่งของ XML ครับ