จะดึงบทความมาแสดงหน้าเว็บ โดยใช้ css กำหนด ช่วยแนะนำด้วยครับ

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

$matchs= array();

preg_match_all('#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#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*(["\'])(.*?)\1#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 ส.ค. 2554 5 2,202

preg_math_all เขาใช้เพื่อแยก tag img ออกจากเนื้อหาครับ



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



ส่วนการแสดงผล ผมแนะนำให้ใช้ตารางครับ จะจัดการได้ง่ายกว่า ใช้ ul
#1

คือตอนนี้ผลลัพท์ที่ได้มันเป็นอย่างนี้ครับ





ส่วนนี้เป็นโค้ดที่ใช้ครับ ช่วยดูให้ทีนะครับ ไม่รู้ว่าไปทำอะไรผิด ทำไมมันออกมาเป็น .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:

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

#2

น่าจะยากนะครับ



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



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



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



#3

ขอบคุณมากนะครับ คำหรับคำแนะนำ

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

อ้างอิงจาก ความคิดเห็น #4ขอบคุณมากนะครับ คำหรับคำแนะนำ

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


555+++

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

#5
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^