ข้ามไปที่เนื้อหาหลัก

การทำ API Web service ราคาทองคำ ด้วย PHP

หลักการทำงานของ code จะใช้การดึงข้อมูลเว็บไซต์ที่ต้องการ จากนั้นดึงข้อมูลบางส่วนมาใช้งาน ตาม tag html ที่ต้องการ

Class PHP ที่ต้องใช้งาน หลักๆ DOMDocument , DOMXpath


<?PHP
libxml_use_internal_errors(true);
        $gold = file_get_contents('https://www.goldtraders.or.th');

        $dom = new DOMDocument();
        $dom->validateOnParse = true;
        $dom->loadHTML($gold);
        $xpath = new DOMXpath($dom);
        $trs = $xpath->query("//div[contains(@id,'DetailPlace_uc_goldprices1_GoldPricesUpdatePanel')]//table/tr");
        $item = array();
        $gold_type=""$gold_update="";
        if(count($trs) > 0){

            $update = $xpath->query("//div[contains(@id,'DetailPlace_uc_goldprices1_GoldPricesUpdatePanel')]//span[contains(@id,'DetailPlace_uc_goldprices1_lblAsTime')]"); 

            $r=1;
            foreach ($trs as $tr) {
                $tds = $xpath->query("//div[contains(@id,'DetailPlace_uc_goldprices1_GoldPricesUpdatePanel')]//table//tr[$r]//td",$tr);
                $gold_Item = new Gold_Item();
                $c = 0;
                foreach($tds as $td){       
                    if($r==1){
                        if($c==0){
                            $gold_type =  trim($td->nodeValue);
                            $gold_update =  trim($update[0]->nodeValue);  
                        }       
                    }
                    if($r==2 ||$r==3){
                        if($c==0)
                        $gold_Item->Gold_Name = trim($td->nodeValue);

                        if($c==1)
                        $gold_Item->Price_Buy = floatvalue(trim($td->nodeValue));

                        if($c==2)
                        $gold_Item->Price_Sale = floatvalue(trim($td->nodeValue));
                    }
                    $c++;
                }


                if($r==2 ||$r==3){
                    array_push($item,$gold_Item);
                }

                $r++;
            }
            $obj =(objectarray();
                $obj->status="success";
                $obj->Gold_Type=$gold_type;
                $obj->Gold_Update=$gold_update;
                $obj->Gold_Item = $item;

            header('Content-Type: application/json');
            echo json_encode($obj,JSON_UNESCAPED_UNICODE);
        }

function floatvalue($val){
    $val = str_replace(",",".",$val);
    $val = preg_replace('/\.(?=.*\.)/'''$val);
    return floatval($val);
}

class Gold_Item{
    public $Gold_Name;
    public $Price_Buy;
    public $Price_Sale;
}

?>

ความคิดเห็น