วันอังคารที่ 9 เมษายน พ.ศ. 2556

การใช้ curl เป็นตัวกลางในการส่งค่า

เราจะ ได้ทดลอง การตัดต่อ ข้อความเฉพาะส่งจาก เว็บไซต์อื่นนะครับ ด้วย ตัวอย่าง การ ดึง บทความจากเว็บไซต์ เมืองนอก มาแสดงผลในหน้าเว็บเรา โดยการ ตัดเอาเฉพาะ ข้อมูล ตรง ส่วน main บทความเท่านั้น นะครับ


  1. <?php
  2. $url="http://www.4guysfromrolla.com/webtech/";
  3. if ($viewcat<>"")
  4. $url.=$viewcat;
  5. else
  6. $url.="index_asp.shtml";


  7. function replaceLink($data){
  8. $data = ereg_replace('<a href="/webtech/','<a href="aspnet_article.php?viewcat=',$data);
  9. return $data;
  10. }

  11. function callArticle(){
  12. global $url;
  13. $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
  14. // $params = ""; 
  15. // $url .="?".$params;
  16. $ch = curl_init();
  17. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  18. curl_setopt($ch, CURLOPT_HEADER, 0);
  19. curl_setopt($ch, CURLOPT_POST,0);
  20. //curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
  21. curl_setopt($ch, CURLOPT_URL,$url);
  22. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  23. curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

  24. $result = curl_exec($ch);
  25. $start_result = strpos($result,"<!--content_start-->");


  26. $end_result = strpos($result,"<P><CENTER>",$start_result+11);
  27. $substring .= substr($result,$start_result,$end_result-$start_result);
  28. curl_close ($ch);
  29. return replaceLink($substring);
  30. }
  31. ?>
  32. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  33. <HTML>
  34. <HEAD>
  35. <TITLE> New Document </TITLE>
  36. <meta http-equiv="Content-Type" content="text/html; charset=tis-620">
  37. </HEAD>

  38. <BODY>
  39. <h2>การตัดต่อ Article http://www.4guysfromrolla.com/webtech/index_asp.shtml <br>ผลลัพธ์ที่ได้คือ</h2><hr>
  40. <?php
  41. echo callArticle();
  42. ?>
  43. </BODY>
  44. </HTML>
คัดลอกไปที่คลิปบอร์ด
จะเห็นว่า เมื่อ curl ไปดึงบทความจากเว็บไซต์ตัวอย่างมาแล้ว ผมจะทำการ ใช้ function strpos ของ php เพื่อ ค้นหา เอา tag ที่ เป็นส่วน content ที่ผมต้องการ โดยการ find หา จุด string start และ หา string end ก็คือ บริเวณที่ tag ของ content สิ้นสุด ที่เราต้องการ 
เราก็จะได้ข้อมูล บริเวณ ภายใต้แทก start และ end ของข้อมูลครับ 
ทั้งนี้ ก่อนที่เราจะหา content start ได้ เราจำเป็นจะต้อง มอง content ของเว็บที่เราต้องการ ให้เป็น Dom เพื่อหา บริเวณ แทก ที่เป็นจุดเริ่มของ content ที่เราต้องการ มาครับ และ มองหา บริเวณ ของ dom จุดที่เป็น จุดสิ้นสุด ของ content ที่เราต้องการ เพื่อมาตัดต่อเอา ข้อมูลเฉพาะนะครับ