จะดึงบทความมาแสดงหน้าเว็บ โดยใช้ 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 มันคือค่าของอะไรหรอครับ
ขอคำแนะนำเพิ่มเติมด้วยนะครับ ขอบคุณมากๆ ครับ
$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 มันคือค่าของอะไรหรอครับ
ขอคำแนะนำเพิ่มเติมด้วยนะครับ ขอบคุณมากๆ ครับ
ลอง print_r($match); ดุเพื่อดูว่าผลลัพท์เป็นยังไง
ส่วนการแสดงผล ผมแนะนำให้ใช้ตารางครับ จะจัดการได้ง่ายกว่า ใช้ ul
ส่วนนี้เป็นโค้ดที่ใช้ครับ ช่วยดูให้ทีนะครับ ไม่รู้ว่าไปทำอะไรผิด ทำไมมันออกมาเป็น .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] อยู่ดีครับ
ขอบคุณมากๆ ครับ
คำแนะนำคือให้ลองศึกษา preg_match_all ให้ดีก่อน ว่าจะได้ผลลัพท์ยังไง แล้วก้ออกแบบ คำสั้งตามนั้น
ปกติแล้ว การ ใช้คำสั่งแบบนี้ ยังมีปัญหาอยู่พอสมควร เนื่องจาก เนื้อหา ที่จะนำมาแยก มักมีรูปแบบที่ไม่แน่นอน ทำให้การแยกไม่เป็นไปตามที่คาดหวัง การทำโดยปกติทั่วๆไป คือ อาต้องใช้หลายๆคำสั่งประกอบกันครับ
คำแนะนำของผมคือ ให้ศึกษาการใช้งานฟังก์ชั่นก่อนละครับ คงไม่มีใครให้คำตอบที่ครอบจักรวาลได้ และ อีกอย่าง คำสั่งที่ส่งมาให้ดูมันก็ไม่ได้ผิด เพียงแต่มันไม่ตรงกับเนื้อหาที่เอามาแยกเท่านั้น ถ้าเปลี่ยนไปใช้เนื้อหาที่เป็นไปตามกฎด้านบน มันคงจะแยกได้ครับ
แสดงว่าวิธีหารูปจากบทความนี้ มันก็ไม่แน่นอนใช่ไหม๋ครับ
555+++
สามารถทำได้โดยการใช้คำสั่งที่ซับซ้อนครับ ถ้าจำเป้น และ ขยันก็ลองดูครับ แต่ก็มาถูกทางแล้วแหละครับ