BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« เมื่อ: 11 มีนาคม 2009, 02:59:14 » |
|
เนื่องจากผมใช้คำสั่ง file_get_contents ดึงหน้า page มา 1 หน้า
แล้วจะทำการตัดเอารูป จากหน้านั้น มาเก้บไว้ในตัวแปร
ซึ่งที่ดูๆมา ในหน้านั้น มี รูป หลายรูปมาก แต่ที่ผมสนใจคือ รูปที่อยู่ แรกสุดเลย
ผมก็เลยเขียน
$pic = eregi_replace(".*<img src=\"","",$cpage); $pic = eregi_replace("\" border.*","",$pic);
และทดสอบ มันผ่านคับ แต่ปัญหาคือ มันไปดึงรูปล่างสุดมาให้ซะงั้น ผมจะต้องเขียนยังไง เพื่อให้มันดึงรูปแรกสุดมาเก็บอ่ะคัรบ
ขอบคุณครับ
|
|
|
บันทึกการเข้า
|
|
|
|
Kobsoft
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 255
ออฟไลน์
กระทู้: 2,574
|
 |
« ตอบ #1 เมื่อ: 11 มีนาคม 2009, 03:47:13 » |
|
 อ่านไฟล์เสร็จแล้วก็จะมีสถานะคล้ายๆ การ fopen ไฟล์ txt ธรรมดาน่ะคับ โครงสร้างของสิ่งที่ต้องการดึงถ้ามันมีหลาย object มันจะกลายเป็น Array โดยถ้าเราไปดึงถึกๆ มา แบบนั้น...แน่นอน ตามหลักระบบแล้วมันจะเอา object สุดท้ายมาให้ แต่เราก็สามารถระบุได้ง่ายๆ ในการดักจับ Array ตัวใดตัวหนึ่งมา ยกตัวอย่างโค้ดบางส่วน เช่นผมจะเขียนดักจับแท็ก Title ของเว็บเป้าหมาย if (eregi("<title>(.*)</title>", $WebsiteCode, $out)){ $nTitle = $out[1]; }
echo "$nTitle"; ฝีมือยังไม่ถึงขั้นนะเราเนี่ย...
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,518
|
 |
« ตอบ #2 เมื่อ: 11 มีนาคม 2009, 04:08:46 » |
|
preg_match_all('#<img[^>]+src=["|\']([^"|\']+)["|\'][^>]+>#i', $cpage, $match);
$first_img_src = $match[1][0]; ตามนี้ เขียนสด 
|
|
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« ตอบ #3 เมื่อ: 11 มีนาคม 2009, 09:24:07 » |
|
preg_match_all('#<img[^>]+src=["|\']([^"|\']+)["|\'][^>]+>#i', $cpage, $match);
$first_img_src = $match[1][0]; ตามนี้ เขียนสด  ขอบคุณมากครับ เด๊ยวไปลองก่อน
|
|
|
บันทึกการเข้า
|
|
|
|
antie
ก๊วนเสียว
พลังน้ำใจ: 5
ออฟไลน์
กระทู้: 225
|
 |
« ตอบ #4 เมื่อ: 11 มีนาคม 2009, 09:41:34 » |
|
เทพ PHP กันทั้งน้านเลยแหะ 
|
|
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« ตอบ #5 เมื่อ: 11 มีนาคม 2009, 09:51:33 » |
|
ลืมตอบกระทู้นี้ สคริปคุณโจ้ work มากเลยครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
ball6847
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 212
ออฟไลน์
กระทู้: 4,174
|
 |
« ตอบ #6 เมื่อ: 11 มีนาคม 2009, 12:25:08 » |
|
โจ้ยังเจ๋งเหมือนเดิมเลย คุงเต้ก็ยังขยันเหมือนเดิมเลย แหะๆ
|
|
|
บันทึกการเข้า
|
|
|
|
g-ji
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 231
ออฟไลน์
กระทู้: 3,254
|
 |
« ตอบ #7 เมื่อ: 11 มีนาคม 2009, 12:28:43 » |
|
อยากเขียน php เป็นบ้างจัง  จะเริ่มศึกษา php จริงจัง (ตั้งแต่ 1ใหม่เลยเพราะพื้นไม่แน่น) หรือ หันไปเล่น Ruby เลยดีมั้ยหว่า  เริ่มจาก 1 เหมือนกัน แต่เริ่มใหม่หมดเลย
|
|
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« ตอบ #8 เมื่อ: 11 มีนาคม 2009, 15:03:20 » |
|
โจ้ยังเจ๋งเหมือนเดิมเลย คุงเต้ก็ยังขยันเหมือนเดิมเลย แหะๆ
ตอน php มีปัญหา เปิดหา msn คุณบอล คนแรกเลย แต่ offline  ไม่งั้นโดนผมกวน ทั้งคืน 
|
|
|
บันทึกการเข้า
|
|
|
|
bluezip
ก๊วนเสียว
พลังน้ำใจ: 5
ออฟไลน์
กระทู้: 294
|
 |
« ตอบ #9 เมื่อ: 11 มีนาคม 2009, 15:11:22 » |
|
มีคนตอบให้หมดแล้ว
|
|
« แก้ไขครั้งสุดท้าย: 11 มีนาคม 2009, 15:15:00 โดย bluezip »
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« ตอบ #10 เมื่อ: 11 มีนาคม 2009, 22:13:23 » |
|
สคริปคุณ โจ้ ok นะ แต่ พอเป็นตัวนั้นแล้ว มันจับภาพได้เยอะมาก จนบางทีมันเพี้ยนๆ ไปเลยล่ะ เพราะว่า บางทีมันไปดึงรูปอะไรมาแทน ก็ไม่รู้ T_T
ประมาณว่า รูปที่ต้องการถ้าเล่นกับสคริปคุณโจ้ มันจะอยู่ที่ [1][3] แต่ hi5บางคน ตำแหน่ง [1][3] ก็ไม่ใช่ รูปที่ผมต้องการ
แต่ถ้าเป็นตัว
$pic = eregi_replace(".*<img src=\"","",$cpage); $pic = eregi_replace("\" border.*","",$pic);
รู้สึกว่าจะได้แน่ๆ เพียงแต่ ยังเขียนให้มันดึง ตำแหน่งแรกสุดไม่ได้สักที T_T
|
|
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« ตอบ #11 เมื่อ: 11 มีนาคม 2009, 22:42:52 » |
|
ในที่สุดก็ผ่านจนได้ ผ่านได้ไงก็ไม่รู้ เอาสคริปเก่าๆ ที่คุณไอซ์ช่วย มา โม จนได้ http://friend.yorkza.com/  ช่วยทดสอบ และ เสนอแนะหน่อยครับบ ว่าต้องมี หรือ แก้ไข อะไรบ้าง จะหนีไปทำรูปเล่มล่ะ
|
|
|
บันทึกการเข้า
|
|
|
|
ball6847
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 212
ออฟไลน์
กระทู้: 4,174
|
 |
« ตอบ #12 เมื่อ: 11 มีนาคม 2009, 23:12:26 » |
|
ลองแบบนี้ดูจิคับ เจาะจงลงไปอีกนิด <?php
$url = "";
$page = getURL($url); preg_match("#<img src=\"(http://photos[\d]+\.hi5\.com/[^\"]+)\"#" , $page , $match); echo $match[1];
//=====================================
function getURL($url) { $ch = curl_init($url); curl_setopt($ch , CURLOPT_RETURNTRANSFER , 1); curl_setopt($ch , CURLOPT_FOLLOWLOCATION , 1); $page = curl_exec($ch); curl_close($ch); return $page; }
?>
|
|
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« ตอบ #13 เมื่อ: 12 มีนาคม 2009, 00:28:24 » |
|
อ่า ได้สคริปเพิ่มอีก 1 ขออนุญาติ เก็บ นะครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 8,168
|
 |
« ตอบ #14 เมื่อ: 12 มีนาคม 2009, 00:31:09 » |
|
ลองแบบนี้ดูจิคับ เจาะจงลงไปอีกนิด <?php
$url = "";
$page = getURL($url); preg_match("#<img src=\"(http://photos[\d]+\.hi5\.com/[^\"]+)\"#" , $page , $match); echo $match[1];
//=====================================
function getURL($url) { $ch = curl_init($url); curl_setopt($ch , CURLOPT_RETURNTRANSFER , 1); curl_setopt($ch , CURLOPT_FOLLOWLOCATION , 1); $page = curl_exec($ch); curl_close($ch); return $page; }
?>
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/bosnos/domains/yorkza.com/public_html/friend/curl.php on line 47 สงสัย host ผมไม่ได้เปิดระบบไว้ให้หรือเปล่า
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,518
|
 |
« ตอบ #15 เมื่อ: 12 มีนาคม 2009, 00:48:29 » |
|
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir ผมก็เคยเจอ จนผมเขียนคลาสของผม แก้ปัญหาไว้ใช้เองเลย (ไม่ขอแจก เก็บไว้ใช้เอง) จากโค้ดเดิม ผมลองแก้ ฟังค์ชั่นเป็นแบบนี้ function getURL($url) { $ch = curl_init($url); curl_setopt($ch , CURLOPT_RETURNTRANSFER , 1); curl_setopt($ch, CURLOPT_HEADER, 1); $res = curl_exec($ch); curl_close($ch); if(preg_match("#Location\s*:\s*([^\r\n]+)\r\n#i", $res, $match)) { $page = getURL($match[1]); } else { list($header, $page) = preg_split ( "#\r?\n\r?\n#", $res, 2, PREG_SPLIT_NO_EMPTY ); } return $page; }
|
|
« แก้ไขครั้งสุดท้าย: 12 มีนาคม 2009, 00:57:23 โดย EThaiZone »
|
บันทึกการเข้า
|
|
|
|
|