หัวข้อ: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จากหลายจุดยังไงครับ
เริ่มหัวข้อโดย: untilate ที่ 05 กรกฎาคม 2009, 14:16:57
ผมว่าพี่ๆ คงไม่เข้าใจคำถามผมแน่เลย สมมุติ ไฟล์นี้นะครับ ......<span class="black_bold">Text A (1)</span>..... ......</a><br>Text A (2)</td>....... ......<span class="black_bold">Text B (1)</span>..... ......</a><br>Text B (2)</td>....... ......<span class="black_bold">Text C (1)</span>..... ......</a><br>Text C (2)</td>....... ผมต้องการดึงมาเป็น Text A (2) - Text A (1) Text B (2) - Text B (1) Text C (2) - Text C (1) แต่ถ้าผมเขียนแบบ <?php $contents = implode ('', file ('http://xxx')); $content = preg_replace("|(\s)+|", ' ', $contents); preg_match('#</a><br>(.*?)</td>#', $content, $return1); preg_match('#<span class="black_bold">(.*?)</span></a><br>#', $content, $return2); echo $return1[1]." -".$return2[1] ; ?>
มันจะได้แค่ Text A (2) - Text A (1) ผมต้องแก้ตรงไหนอะครับ ขอบคุณมากครับ
หัวข้อ: Re: ใช้ file_get_contents แล้ว ถ้าเืเนื้อหาที่จะดึงมีหลายที่ ต้องทำไงครับ
เริ่มหัวข้อโดย: beg ที่ 05 กรกฎาคม 2009, 15:54:01
ใช้ preg_match_all ครับ
หัวข้อ: Re: ใช้ file_get_contents แล้ว ถ้าเืเนื้อหาที่จะดึงมีหลายที่ ต้องทำไงครับ
เริ่มหัวข้อโดย: untilate ที่ 05 กรกฎาคม 2009, 16:00:23
ใช้ preg_match_all ครับ
ขอบคุณมากครับ แต่ใช้ยังไงอะ ให้มันขึ้นบรรทัดใหม่อะ
หัวข้อ: Re: ใช้ file_get_contents แล้ว ถ้าเืเนื้อหาที่จะดึงมีหลายที่ ต้องทำไงครับ
เริ่มหัวข้อโดย: untilate ที่ 05 กรกฎาคม 2009, 17:50:38
ทำไม่ได้จริงๆ ครับ
ลองมาทั้งวันแล้ว
ช่วยหน่อยนะครับ
ขอบคุณครับ
หัวข้อ: Re: ใช้ file_get_contents แล้ว ถ้าเืเนื้อหาที่จะดึงมีหลาย
เริ่มหัวข้อโดย: untilate ที่ 05 กรกฎาคม 2009, 18:23:25
แหะตอบอยู่คนเดียว
ผมว่าพี่ๆ ต้องไปเข้าใจคำถามผมแน่เลย
สมมุติ ไฟล์นี้นะครับ
......<span class="black_bold">Text A (1)</span>..... ......</a><br>Text A (2)</td>.......
......<span class="black_bold">Text B (1)</span>..... ......</a><br>Text B (2)</td>.......
......<span class="black_bold">Text C (1)</span>..... ......</a><br>Text C (2)</td>.......
ผมต้องการดึงมาเป็น
Text A (2) - Text A (1) Text B (2) - Text B (1) Text C (2) - Text C (1)
ช่วยผมหน่อยนะครับ
ขอบคุณครับ
หัวข้อ: Re: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จากหลายจุดยังไงครับ
เริ่มหัวข้อโดย: EThaiZone ที่ 05 กรกฎาคม 2009, 19:57:51
<?php
$content = <<<EOF
......<span class="black_bold">Text A (1)</span>..... ......</a><br>Text A (2)</td>.......
......<span class="black_bold">Text B (1)</span>..... ......</a><br>Text B (2)</td>.......
......<span class="black_bold">Text C (1)</span>..... ......</a><br>Text C (2)</td>.......
EOF;
preg_match_all('#<span class="black_bold">(.*?)</span>.*?</a><br>(.*?)</td>#s', $content, $matches);
foreach($matches[1] as $k => $v) { echo $matches[2][$k]." - ".$matches[1][$k]."<br/>"; }
?>
หัวข้อ: Re: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จากหลายจุดยังไงครับ
เริ่มหัวข้อโดย: untilate ที่ 05 กรกฎาคม 2009, 20:56:24
ขอบคุณพี่ EThaiZone มากครับ
แต่..
Text A (2) - Text A (1)
มันไม่คู่กันอะ
มันกลายเป็น เอา
Text A (2) - Text B (1) Text G (2) - Text F (1) Text B (2) - Text C (1)
นึกออกปะครับ แบบมันจับคู่กันมั่วหมดเลย
หัวข้อ: Re: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จากหลายจุดยังไงครับ
เริ่มหัวข้อโดย: EThaiZone ที่ 05 กรกฎาคม 2009, 21:23:19
ผมก็ทำตามตัวอย่างข้อความที่คุณให้มา ถ้าอยากได้ผลลัพท์ถูกต้อง คุณก็ต้องเอาข้อความจริงๆ มา แต่ผมไม่ได้อยากบอกแบบจับมือสอนนะ
โค้ดที่ผมทำให้ดู นั้นเป็นตัวอย่าง ถ้ามันรันถูกต้อง ก็ลองมองแนวว่าผมเขียนมาเป็นยังไง แล้วค่อยเอาไป apply เพื่อใช้จริงอีกที
:P
หัวข้อ: Re: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จา
เริ่มหัวข้อโดย: untilate ที่ 05 กรกฎาคม 2009, 21:49:33
ขอบคุณมากครับ พอดีไม่เคยใช้ เกี่ยวกับพวก ดึงเว็บเลย ก็เลยไม่ค่อยเข้าใจครับ นี่ครับข้อความเต็มนะครับ <html><head></head><body> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903387601" target="_parent"><span class="black_bold">ไม่มีหัวใจ...ไร้สมอง</span></a><br /> NOS</td> </tr> <tr> <td colspan="3"></td> </tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903362701" target="_parent"><span class="black_bold">ประโยคเจ็บ</span></a><br /> กบ Taxi</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0901557604" target="_parent"><span class="black_bold">อย่างน้อย</span></a><br /> ต็อง วิตดิวัต พันธุร</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903363301" target="_parent"><span class="black_bold">ย้ำคิดย้ำจำ</span></a><br /> ป๋อง ศรัณย์</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903363501" target="_parent"><span class="black_bold">ไม่ใช่ความจริง</span></a><br /> มาลีวัลย์</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903358701" target="_parent"><span class="black_bold">Yes Monday Feat. Jen</span></a><br /> เจ เจตริน</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903356001" target="_parent"><span class="black_bold">เหงาจังเลย</span></a><br /> บี-โอ-วาย</td> </tr> <tr></tr> </table> </body></html>
คือผมอยากให้มันแสดง ชื่อศิลปิน ก่อนแล้วชื่อเพลงอะครับ เพราะไม่เข้าใจหลักการว่ามัน จะจับคู่ กันยังไง นั่งแก้ไป แก้มากทั้งวัน ทำไม่ได้ซักที
หัวข้อ: Re: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จากหลายจุดยังไงครับ
เริ่มหัวข้อโดย: EThaiZone ที่ 05 กรกฎาคม 2009, 21:59:20
<?php
$content = <<<EOF
<html><head></head><body> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903387601" target="_parent"><span class="black_bold">ไม่มีหัวใจ...ไร้สมอง</span></a><br /> NOS</td> </tr> <tr> <td colspan="3"></td> </tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903362701" target="_parent"><span class="black_bold">ประโยคเจ็บ</span></a><br /> กบ Taxi</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0901557604" target="_parent"><span class="black_bold">อย่างน้อย</span></a><br /> ต็อง วิตดิวัต พันธุร</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903363301" target="_parent"><span class="black_bold">ย้ำคิดย้ำจำ</span></a><br /> ป๋อง ศรัณย์</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903363501" target="_parent"><span class="black_bold">ไม่ใช่ความจริง</span></a><br /> มาลีวัลย์</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903358701" target="_parent"><span class="black_bold">Yes Monday Feat. Jen</span></a><br /> เจ เจตริน</td> </tr> <tr></tr> </table> <table width="130" border="0" cellpadding="0" cellspacing="0" class="player_black"> <tr> <td width="6"></td> <td width="94"><a href="http://web.in.th/0903356001" target="_parent"><span class="black_bold">เหงาจังเลย</span></a><br /> บี-โอ-วาย</td> </tr> <tr></tr> </table> </body></html>
EOF;
preg_match_all('#<span class="black_bold">(.*?)</span></a><br />(.*?)</td>#s', $content, $matches);
foreach($matches[1] as $k => $v) { echo $matches[2][$k]." - ".$matches[1][$k]."<br/>"; }
?> มันไม่ยากครับ ฝึกบ่อยๆ หมั่น print_r บ่อยๆ ศึกษา output สัมพันธ์ยังไงกับตัว regex เดี๋ยวก็คล่องเองครับ
หัวข้อ: Re: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จากหลายจุดยังไงครับ
เริ่มหัวข้อโดย: untilate ที่ 06 กรกฎาคม 2009, 10:57:04
ผมทำได้แล้วครับ ขอบคุณมากๆ แต่รู้สึกมันจะช้าจังอะครับ มันเกิดจาก ตรงไหนอะครับ <?php $file = file_get_contents("http://xx.com"); $content = ereg_replace('[[:space:]]+', '', trim($file)); $contentnew = iconv('tis-620', 'utf-8', $content); preg_match_all('#<spanclass="player_black_bold">(.*?)</span></a><br>(.*?)</td>#s', $contentnew, $matches); foreach($matches[1] as $k => $v) { echo '<a href="search.php?q='.$matches[1][$k]."%2B".$matches[2][$k].'">'.$matches[1][$k]." - ".$matches[2][$k].'</a>'."<br/> "; } ?>
หัวข้อ: Re: ใช้ file_get_contents ผมจะดึงเนื้อหาลักษณะเดียวกัน จากหลายจุดยังไงครับ
เริ่มหัวข้อโดย: thenetxx ที่ 08 กรกฎาคม 2009, 16:44:16
ผมทำได้แล้วครับ ขอบคุณมากๆ แต่รู้สึกมันจะช้าจังอะครับ มันเกิดจาก ตรงไหนอะครับ <?php $file = file_get_contents("http://xx.com"); $content = ereg_replace('[[:space:]]+', '', trim($file)); $contentnew = iconv('tis-620', 'utf-8', $content); preg_match_all('#<spanclass="player_black_bold">(.*?)</span></a><br>(.*?)</td>#s', $contentnew, $matches); foreach($matches[1] as $k => $v) { echo '<a href="search.php?q='.$matches[1][$k]."%2B".$matches[2][$k].'">'.$matches[1][$k]." - ".$matches[2][$k].'</a>'."<br/> "; } ?> ช้าตรง file_get_contents("http://xx.com"); กับตรง ความเร็ว host และ network ระหว่าง server รวมถึงความเร็ว internet ของคุณเองครับ ^___^
|