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

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

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

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

กระทู้: 2,310



ดูรายละเอียด
« เมื่อ: 16 กรกฎาคม 2009, 19:35:40 »

ตอนนี้ผมเขียนอยู่แบบนี้

โค๊ด:
preg_match_all('#<img>(.*?)</img>#s', $xml, $matches);
foreach($matches[1] as $k => $v) {
echo $matches[1][$k]
;
}

ถ้าเขียนแบบนี้มันเจอกี่อันก็เอาออกมาหมด แต่ถ้าผมจะให้มัน เอาออกมาแค่ 5 อันแรก จะต้องเพิ่มอะไรเข้าไปครับ

ขอบคุณครับ  Kiss Kiss
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 12,459



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

ทำไมไม่ใช้ for วนลูปแทนล่ะครับ  Tongue
บันทึกการเข้า

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

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

กระทู้: 2,310



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

ทำไมไม่ใช้ for วนลูปแทนล่ะครับ  Tongue


ทำไม่เป็นครับ  Cry Cry

Script อันบน ผม ก็ไปเจอมาในบอร์ดนี้แหละครับ
บันทึกการเข้า
kuznetsova
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,316



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

preg_match_all('#<img>(.*?)</img>#s', $xml, $matches);
$num=1;
foreach($matches[1] as $k => $v) {
if($num==5){
break;
}
echo $matches[1][$k];
$num++;
}

ลองดูครับ น่าจะได้ แต่ยังไม่ได้ เทส นะ
บันทึกการเข้า

ball6847
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,152



ดูรายละเอียด
« ตอบ #4 เมื่อ: 16 กรกฎาคม 2009, 20:22:36 »

เอาแค่ 5 ตัวแรกตัดไปได้เลยคับ ไม่ต้องวนอะไรเลยก็ได้

$matches[1] = array_slice($matches[1],0,5);




้http://th.php.net/array_slice

array_slice มันก็คือ substr ของ array นี่แหละคับ ทำงานเหมือนกัน
บันทึกการเข้า

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

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

กระทู้: 12,459



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

preg_match_all('#<img>(.*?)</img>#s', $xml, $matches);
$num=1;
foreach($matches[1] as $k => $v) {
if($num==5){
break;
}
echo $matches[1][$k];
$num++;
}

ลองดูครับ น่าจะได้ แต่ยังไม่ได้ เทส นะ

แบบนี้ก็ได้

preg_match_all('#<img>(.*?)</img>#s', $xml, $matches);
foreach($matches[1] as $k => $v) {
if($k==4) break;
echo $matches[1][$k];
}

เพราะ $k ก็วนตามรอบ
เพียงแต่มันจะเริ่มนับจาก 0 ดังนั้นรอบที่ 5
ค่า k จะเป็น 4
บันทึกการเข้า

pugkung
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,676



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

เอาแค่ 5 ตัวแรกตัดไปได้เลยคับ ไม่ต้องวนอะไรเลยก็ได้

$matches[1] = array_slice($matches[1],0,5);




้http://th.php.net/array_slice

array_slice มันก็คือ substr ของ array นี่แหละคับ ทำงานเหมือนกัน

โหย ได้ของเล่นใหม่อีกแล้ว   Cheesy
บันทึกการเข้า

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