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

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

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

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

กระทู้: 2,318



ดูรายละเอียด
« เมื่อ: 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)

ผมต้องแก้ตรงไหนอะครับ

ขอบคุณมากครับ
« แก้ไขครั้งสุดท้าย: 05 กรกฎาคม 2009, 18:29:20 โดย untilate » บันทึกการเข้า
beg
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,445



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 05 กรกฎาคม 2009, 15:54:01 »

ใช้ preg_match_all  ครับ
บันทึกการเข้า

untilate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #2 เมื่อ: 05 กรกฎาคม 2009, 16:00:23 »

ใช้ preg_match_all  ครับ

ขอบคุณมากครับ

แต่ใช้ยังไงอะ

ให้มันขึ้นบรรทัดใหม่อะ
บันทึกการเข้า
untilate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #3 เมื่อ: 05 กรกฎาคม 2009, 17:50:38 »

ทำไม่ได้จริงๆ ครับ

ลองมาทั้งวันแล้ว

ช่วยหน่อยนะครับ

ขอบคุณครับ
บันทึกการเข้า
untilate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #4 เมื่อ: 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)

ช่วยผมหน่อยนะครับ

ขอบคุณครับ
« แก้ไขครั้งสุดท้าย: 05 กรกฎาคม 2009, 18:25:40 โดย untilate » บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 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/>";
}

?>
บันทึกการเข้า

untilate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #6 เมื่อ: 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)

นึกออกปะครับ แบบมันจับคู่กันมั่วหมดเลย
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 05 กรกฎาคม 2009, 21:23:19 »

ผมก็ทำตามตัวอย่างข้อความที่คุณให้มา
ถ้าอยากได้ผลลัพท์ถูกต้อง คุณก็ต้องเอาข้อความจริงๆ มา
แต่ผมไม่ได้อยากบอกแบบจับมือสอนนะ

โค้ดที่ผมทำให้ดู นั้นเป็นตัวอย่าง
ถ้ามันรันถูกต้อง ก็ลองมองแนวว่าผมเขียนมาเป็นยังไง
แล้วค่อยเอาไป apply เพื่อใช้จริงอีกที

 Tongue
บันทึกการเข้า

untilate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #8 เมื่อ: 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>

คือผมอยากให้มันแสดง ชื่อศิลปิน ก่อนแล้วชื่อเพลงอะครับ

เพราะไม่เข้าใจหลักการว่ามัน จะจับคู่ กันยังไง นั่งแก้ไป แก้มากทั้งวัน ทำไม่ได้ซักที
« แก้ไขครั้งสุดท้าย: 05 กรกฎาคม 2009, 21:52:18 โดย untilate » บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 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
เดี๋ยวก็คล่องเองครับ
บันทึกการเข้า

untilate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #10 เมื่อ: 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/>
"
;
}
?>
บันทึกการเข้า
thenetxx
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,986



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 08 กรกฎาคม 2009, 16:44:16 »

ผมทำได้แล้วครับ

ขอบคุณมากๆ แต่รู้สึกมันจะช้าจังอะครับ

มันเกิดจาก ตรงไหนอะครับ

โค๊ด:
<?php
$file 
file_get_contents("http://xx.com");
$content ereg_replace(&#39;[[:space:]]+&#39;, &#39;&#39;, trim($file));
$contentnew iconv(&#39;tis-620&#39;, &#39;utf-8&#39;, $content);
preg_match_all(&#39;#<spanclass="player_black_bold">(.*?)</span></a><br>(.*?)</td>#s&#39;, $contentnew, $matches);
foreach($matches[1] as $k => $v) {
echo &#39;<a href="search.php?q=&#39;.$matches[1][$k]."%2B".$matches[2][$k].&#39;">&#39;.$matches[1][$k]." - ".$matches[2][$k].&#39;</a>&#39;."<br/>
";
}
?>


ช้าตรง file_get_contents("http://xx.com ");

กับตรง ความเร็ว host และ network ระหว่าง server รวมถึงความเร็ว internet ของคุณเองครับ

^___^
บันทึกการเข้า

Develop site but can't develop life
ASIA
หน้า: [1]   ขึ้นบน
พิมพ์