ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming file_get_contents ออกมาแล้วเราจะสามารถหาข้อความที่เราต้องการหายังไงดีครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: file_get_contents ออกมาแล้วเราจะสามารถหาข้อความที่เราต้องการหายังไงดีครับ  (อ่าน 3112 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
absolutex
สมุนแก๊งเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 515



ดูรายละเอียด เว็บไซต์
« เมื่อ: 23 กันยายน 2008, 19:01:59 »

จาที่อ่านๆดูเห็นบอกว่า curl_init() จะเร็วกว่าใช่ป่าวครับ แล้วจะอกมาเป็น html

ที่นี้ผมอยากหา ส่วนส่วนนึงของเวปที่ ผม get มาอะครับ

อย่าง

$url = $websiteown;
$url = file_get_contents($url);
echo $url; 

$url = $websiteown;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
 
echo $response;


สมมุติว่า

ใน html มี

.
.
.

<div id="content">
<img src="http://..........jpg">
</div>
.
.
.

ผมต้องการข้อมูลที่อยู่หลัง <div id="content">  และ ก่อน </div> เท่านั้นครับ

ต้องเขียนยังไงครับผม
ขอบพระคุณครับ 
บันทึกการเข้า
liveadsense
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 109
ออฟไลน์ ออฟไลน์

กระทู้: 1,300



ดูรายละเอียด
« ตอบ #1 เมื่อ: 23 กันยายน 2008, 19:18:45 »

   if (strstr($response,"img src="http://") ) {
   $lines = explode("http://",$response);
   echo "$lines[0]<br>";
   }

lines = ..........jpg

มั้งครับจำไม่ค่อยได้เหมือนกัน
บันทึกการเข้า


เตือนตัวเอง ว่าเก่งได้ แต่อย่ากร่าง
รู้รับฟัง ไม่ใช่พล่ามเป็นน้ำไหล
อย่าหลงตน ให้คนอื่นเหนื่อยหน่ายใจ
เจอบันได ถ้าขึ้นได้ ต้องลงเป็น
absolutex
สมุนแก๊งเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 515



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 23 กันยายน 2008, 19:19:14 »

คือได้แล้วครับ

preg_match("/<div id=\"content\">(.*)<\/div>/", $url , $matches);  
echo "Test : ".$matches[1];  

 Kiss
« แก้ไขครั้งสุดท้าย: 23 กันยายน 2008, 19:40:41 โดย absolutex » บันทึกการเข้า
absolutex
สมุนแก๊งเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 515



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 23 กันยายน 2008, 19:21:15 »

ฮ๋า เด๋วผมลองดูครับพี่
บันทึกการเข้า
iPhoenix
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 53
ออฟไลน์ ออฟไลน์

กระทู้: 1,384



ดูรายละเอียด
« ตอบ #4 เมื่อ: 23 กันยายน 2008, 19:37:14 »

ผมทำแบบนี้อะ

หลังจากได้ html มาแล้ว อยู่ในตัวแปรชื่อ $content

โค๊ด:
$content = preg_replace("|(\s)+|", ' ', $content);
preg_match('#<div.id="content">(.*?)</div>#', $content, $return);
echo $return[1] ;
บันทึกการเข้า
tinnoi
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 90
ออฟไลน์ ออฟไลน์

กระทู้: 2,955



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 23 กันยายน 2008, 19:46:38 »

โห ได้ไอเดีย ไปใช้เยอะมากเลยครับ

ขอบคุณมากครับ
บันทึกการเข้า

absolutex
สมุนแก๊งเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 515



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 24 กันยายน 2008, 19:29:36 »

มีวิธีที่

file_get_contents($url);
แล้ว
$content = preg_replace("|(\s)+|", ' ', $content);
preg_match('#<div.id="content">(.*?)</div>#', $content, $return);
echo $return[1] ;

แล้ว

ใช้เวลาน้อยที่สุดรึป่าวครับ  Huh?

ลองแล้วรู้สึกว่าถ้า get หลายๆรอบ จะออกมาช้าเลยครับ
« แก้ไขครั้งสุดท้าย: 24 กันยายน 2008, 19:37:52 โดย absolutex » บันทึกการเข้า
ColdMoney
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 200
ออฟไลน์ ออฟไลน์

กระทู้: 12,622



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 24 กันยายน 2008, 20:47:23 »

ที่ช้าเพราะ file_get_contents มากกว่ามั้งครับ ให้ใช้ curl แทนครับ เร็วกว่านะ  Wink
บันทึกการเข้า

digitalex
สมุนแก๊งเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 670



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 24 กันยายน 2008, 21:14:42 »

ลองเขียนเปิด socket เองดูครับได้ข่าวว่าเร็วกว่า curl
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,516



ดูรายละเอียด
« ตอบ #9 เมื่อ: 24 กันยายน 2008, 21:34:13 »

ลองเขียนเปิด socket เองดูครับได้ข่าวว่าเร็วกว่า curl

ยืนยันว่าเร็ว แต่ต้องเขียนให้่ดี อย่าลืม close connection ด้วย

วิธีดีสุด ใช้ sniffer แล้วก็อบ header ขาออกมาใช้ทั้งดุ้นเลย ง่ายดี ^^

แต่ทั้งหมดสำคัญอยู่ที่โฮสนะครับ

ปล. ถ้าทำเว็บด้วยไอ้นี้ มันเข้าข่าย web scarping นะครับ ระวังโฮสเตะ
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์