php curl

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา php curl

php curl
อยากสอบถามค่ะ
เนื่องจากต้องดึงข้อมูลสินค้า curl จาก http://www.itcityonline.com/products?category=smartphone-tablet&subcategory=tablet มาแสดง
แต่ว่าข้อมูลเป็น tag และอยู่ในรูปแบบ json

function dlPage($url) {
 
    $curl=curl_init();
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_REFERER, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36');
    $str = curl_exec($curl);
    curl_close($curl);
    $dom = str_get_html($str);
    return $dom;
 
}

$product_area = $html->find('div.body-wrapper',0);
$product_l1 = $product_area->find('div.product-list-page',0);
$product_l2 = $product_l1->find('div.container',1);
$product_array = $product_l2->find('product-list',0);

foreach($product_array as $key => $item){
 
   foreach($item as $value=> $val){
  echo "<p>";
   //echo "SKU : ".$value['attr'];
  // // // echo $value;
  echo "<br>";
  echo "sub : ".$value;
  echo "<br>";
  echo "eee : ".$indy =$val;
 
 
    }
 
}

ซึ่ง output ที่ได้ จะประมาณนี้ ซึ่งลอง decode แล้วไม่อ่านค่ะ




แต่ไม่ได้มาแค่ข้อมูลตัสนีเท่านั้นนะคะจะมีข้อมูลนี้มาด้วย




ต้องการ echo sku ของสินค้าออกมาเก็บไว้ในฐานข้อมูลค่ะ ไม่ทราบว่าพอมีวิธีมั้ยคะ


Kaewkan Chiwden Kansomboon 09-07-2018 16:55:51

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ตรวจสอบดูว่า สามารถ json_encode ได้ไหม แล้วแปลงเป็น array ถ้าแปลงทั้งหมดไม่ได้ ให้แยกเป็นสวน
แล้วแปลงเฉพาะส่วน

หรือไม่ก็ลองวิธ๊นี้แทน 
แนะนำ PHP Simple HTML DOM Parser สำหรับ ดึงข้อมูล เฉพาะส่วนที่ต้องการ http://niik.in/388 
https://www.ninenik.com/content.php?arti_id=388 via @ninenik

แต่สำคัญจะอยู่ที่ข้อมูลที่เราไปดึง เราควรจะได้รับอนุญาต หรือขออนุญาตเว็บที่เราไปดึงให้ถูกต้องก่อน


ninenik 10-07-2018
 ความคิดเห็นที่ 2
จากที่ได้ output จาก curl ลองใช้ regular expression ช่วยน่าจะดีกว่านะครับ

$str = curl_exec($curl);

เอา string มาจับ match

preg_match_all('/sku&quot;:&quot;(.*?)&quot;,&quot;title&quot;:&quot;(.*?)&quot;,&quot;/', $str , $match);









psnarkdee 19-07-2018 17:52






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ