A-AA+then

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

1,276
ผมอยากเอารูปแรกมาแสดงด้วยครับ โดยมีคนแนะนำมาให้เขียนแบบนี้
$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:

5 ความคิดเห็น

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
^