ผมอยากเอารูปแรกมาแสดงด้วยครับ โดยมีคนแนะนำมาให้เขียนแบบนี้

$matchs= array();

preg_match_all('#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)#im',$เนื้อหา, $matchs );



เวลาเรียกใช้ก็ให้ใช้ $matchs[2][0];

ผมอยากให้เคค้าอธิบายให้หน่อย เค้าก็ไม่ได้อธิบายให้ว่าฟังก์ชัน preg_match_all แต่ละค่าคืออะไร



ที่นี้ผมเขียนมาถึงนี่แล้วครับ





$strArticle = "SELECT * FROM article ORDER BY post_id DESC Limit 0,5";


$articleQuery = mysql_query($strArticle) or die("ผิดพลาด[1]!... ::<br>$strArticle");


$numArticle = mysql_num_rows($articleQuery);


$i= 0;


while($i < $numArticle){

$articleResult = mysql_fetch_assoc(
$articleQuery);


$matchs= array();


preg_match_all('#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)#im',$articleResult['content'], $matchs );


$articleResult = mysql_fetch_assoc($articleQuery)


?>


 


<ul>


<li><a href="ลิงค์บทความ">".$matchs[2][0]."</a></li>


<li></li>


<li></li>


</ul>


 


<?


}


$i++;

===============================================

?: คือผมจะให้มันแสดงแนวนอน 5 บทความ ผมต้องกำหนด display: inline ที่ไหนหรอครับ?

?: แล้วตรง $matchs[
2][0]; 2 มันคือค่าของอะไรหรอครับ



ขอคำแนะนำเพิ่มเติมด้วยนะครับ ขอบคุณมากๆ ครับ :36:

กรกฎ วิริยะ 16 Aug 2011 07:11
preg_math_all เขาใช้เพื่อแยก tag img ออกจากเนื้อหาครับ



ลอง print_r($match); ดุเพื่อดูว่าผลลัพท์เป็นยังไง



ส่วนการแสดงผล ผมแนะนำให้ใช้ตารางครับ จะจัดการได้ง่ายกว่า ใช้ ul
Unknown 16 Aug 2011 23:27
คือตอนนี้ผลลัพท์ที่ได้มันเป็นอย่างนี้ครับ





ส่วนนี้เป็นโค้ดที่ใช้ครับ ช่วยดูให้ทีนะครับ ไม่รู้ว่าไปทำอะไรผิด ทำไมมันออกมาเป็น .Array[0] นะครับ ตรงนี้ผมอยากให้มันเป็นชื่อ title ที่มีลิงค์ด้วยนะครับ




<?


function cutstr($str, $maxstr='', $holder='') {


if (strlen($str) > $maxstr) {


$str = iconv_substr($str, 0, $maxstr, "UTF-8") . $holder;


}


return $str;


}


$strArticle = "SELECT * FROM article ORDER BY post_id DESC Limit 0,5";


$articleQuery = mysql_query($strArticle) or die("ผิดพลาด[1]!... ::<br>$strArticle");


$numArticle = mysql_num_rows($articleQuery);


$i= 0;


while($i < $numArticle){


$articleResult = mysql_fetch_assoc($articleQuery);


$matchs= array();


preg_match_all('#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im',$articleResult['content_field'], $matchs );


?>


 


<ul>


<li><a href="article_full.php?post_id=<?=$articleResult['post_id'];?>" ><?=".$matchs[2][0]."?></a></li>


<li><a href="article_full.php?post_id=<?=$articleResult['post_id'];?>" ><?=$articleResult['title'];?></a></li>


<li><?echo cutstr($articleResult[post_details],'500','...')?></li>


<li><a href="article_full.php?post_id=<?=$articleResult['post_id'];?>" >อ่านต่อ >></a></li>


</ul>


 


<?


$i++;


}


?>



ขอรบกวนหน่อยนะครับ ผมแก้มานานแล้ว มันก็ยังเป็น array[0] อยู่ดีครับ :48:

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

กรกฎ วิริยะ 17 Aug 2011 12:33
น่าจะยากนะครับ



คำแนะนำคือให้ลองศึกษา preg_match_all ให้ดีก่อน ว่าจะได้ผลลัพท์ยังไง แล้วก้ออกแบบ คำสั้งตามนั้น



ปกติแล้ว การ ใช้คำสั่งแบบนี้ ยังมีปัญหาอยู่พอสมควร เนื่องจาก เนื้อหา ที่จะนำมาแยก มักมีรูปแบบที่ไม่แน่นอน ทำให้การแยกไม่เป็นไปตามที่คาดหวัง การทำโดยปกติทั่วๆไป คือ อาต้องใช้หลายๆคำสั่งประกอบกันครับ



คำแนะนำของผมคือ ให้ศึกษาการใช้งานฟังก์ชั่นก่อนละครับ คงไม่มีใครให้คำตอบที่ครอบจักรวาลได้ และ อีกอย่าง คำสั่งที่ส่งมาให้ดูมันก็ไม่ได้ผิด เพียงแต่มันไม่ตรงกับเนื้อหาที่เอามาแยกเท่านั้น ถ้าเปลี่ยนไปใช้เนื้อหาที่เป็นไปตามกฎด้านบน มันคงจะแยกได้ครับ



Unknown 17 Aug 2011 15:01
ขอบคุณมากนะครับ คำหรับคำแนะนำ

แสดงว่าวิธีหารูปจากบทความนี้ มันก็ไม่แน่นอนใช่ไหม๋ครับ 
กรกฎ วิริยะ 17 Aug 2011 16:53
Quotations by Comment #4ขอบคุณมากนะครับ คำหรับคำแนะนำ

แสดงว่าวิธีหารูปจากบทความนี้ มันก็ไม่แน่นอนใช่ไหม๋ครับ 


555+++

สามารถทำได้โดยการใช้คำสั่งที่ซับซ้อนครับ ถ้าจำเป้น และ ขยันก็ลองดูครับ แต่ก็มาถูกทางแล้วแหละครับ