ผมว่าพี่ๆ คงไม่เข้าใจคำถามผมแน่เลย
สมมุติ ไฟล์นี้นะครับ
......<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)
ผมต้องแก้ตรงไหนอะครับ
ขอบคุณมากครับ
ใช้ preg_match_all ครับ
อ้างถึงจาก: beg ใน 05 กรกฎาคม 2009, 15:54:01
ใช้ preg_match_all ครับ
ขอบคุณมากครับ
แต่ใช้ยังไงอะ
ให้มันขึ้นบรรทัดใหม่อะ
ทำไม่ได้จริงๆ ครับ
ลองมาทั้งวันแล้ว
ช่วยหน่อยนะครับ
ขอบคุณครับ
แหะตอบอยู่คนเดียว
ผมว่าพี่ๆ ต้องไปเข้าใจคำถามผมแน่เลย
สมมุติ ไฟล์นี้นะครับ
......<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
$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/>";
}
?>
ขอบคุณพี่ 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)
นึกออกปะครับ แบบมันจับคู่กันมั่วหมดเลย
ผมก็ทำตามตัวอย่างข้อความที่คุณให้มา
ถ้าอยากได้ผลลัพท์ถูกต้อง คุณก็ต้องเอาข้อความจริงๆ มา
แต่ผมไม่ได้อยากบอกแบบจับมือสอนนะ
โค้ดที่ผมทำให้ดู นั้นเป็นตัวอย่าง
ถ้ามันรันถูกต้อง ก็ลองมองแนวว่าผมเขียนมาเป็นยังไง
แล้วค่อยเอาไป apply เพื่อใช้จริงอีกที
:P
ขอบคุณมากครับ
พอดีไม่เคยใช้ เกี่ยวกับพวก ดึงเว็บเลย ก็เลยไม่ค่อยเข้าใจครับ
นี่ครับข้อความเต็มนะครับ
<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>
คือผมอยากให้มันแสดง ชื่อศิลปิน ก่อนแล้วชื่อเพลงอะครับ
เพราะไม่เข้าใจหลักการว่ามัน จะจับคู่ กันยังไง นั่งแก้ไป แก้มากทั้งวัน ทำไม่ได้ซักที
<?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
เดี๋ยวก็คล่องเองครับ
ผมทำได้แล้วครับ
ขอบคุณมากๆ แต่รู้สึกมันจะช้าจังอะครับ
มันเกิดจาก ตรงไหนอะครับ
<?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/>
";
}
?>
อ้างถึงจาก: 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/>
";
}
?>
ช้าตรง file_get_contents("http://xx.com");
กับตรง ความเร็ว host และ network ระหว่าง server รวมถึงความเร็ว internet ของคุณเองครับ
^___^