จะดึงบทความมาแสดงหน้าเว็บ โดยใช้ 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 เวลา 03:28 น. 5 1,283

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
^