การค้นหา URL ของข้อมูลที่น้ำมาใส่ใน tag iframe ใน phpbb

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
Ittichai_chupol
PHP VIP Members
PHP VIP Members
Posts: 5410
Joined: 19/09/2018 10:33 am

การค้นหา URL ของข้อมูลที่น้ำมาใส่ใน tag iframe ใน phpbb

Post by Ittichai_chupol »

- สำหรับผู้ที่กำลังศึกษาพัฒนา เว็บบอร์ด phpbb นัน คงไม่อาจจะหนีพ้นการใช้ tag ต่างๆ ของ html เข้ามาช่วยสำหรับการแสดงผล ของ phpbb ที่พัฒนาขึ้นมา ซึ่ง ถึงแม้ว่า เราจะใช้ tag ส่วนใหญ่ไม่กี่ tag ก็ตาม และมีมี tag อีกมากมายที่ไม่ได้นำมาใส่โดยตรงก็ตาม แต่ก็ไม่ใช้ว่าเราจะไม่ต้องใช้ tag เหล่านั้น เพราะบางทีเราจะะไปพบว่า เรามีการใช้ tag เหล่านี้มาจาก ผลลัพธ์ของการใช้งาน bbcode ก็ได้ เช่น การการใช้งาน ะag iframe เพื่อใช้ในการสร้าง bbcode เพื่อแสดง วิดีโอในโพสต์
- ซึ่งในบางครั่ง การใช่ bbcode เพื่อเขียนโพสต์ นั้น อาจจะมีการเก็บลงในฐานข้อมูลอีกแบบ แต่พอนำมาแสดงก็ได้ผลลัพธ์อีก แบบ ที่มีส่วนต่างจากข้อมูลที่เราเก็บยลงในฐานข้อมูล เช่น การใช้งาน bbcode ที่ผมสร้างขึ้นมาเอง โดยถ้าหากเก็บลงในฐานข้อมูลนั้น จะมีโดด ดังนี้

Code: Select all

<br/>
<YOUTUBE content="qlUen8xpmTY"><s>[youtube]</s>qlUen8xpmTY<e>[/youtube]</e></YOUTUBE><br/>
<br/>

แต่หากนำไปแสดงใน html ผลอีกแบบ คือ

Selection_999(1805).png
แต่เมื่อลองทำการ View source แล้วก็จะเห็นว่าโคดที่แสดงวิด๊โอจะได้ ดังนี้

Code: Select all

<br>
<iframe style="width:90%;height:315px" src="https://www.youtube.com/embed/qlUen8xpmTY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><br>
<br>
ซึ่งจะเห็นว่า โคดที่เก็บลงในฐานข้อมูลนั้น มีความต่างกับ ส่วนที่แสดงอย่าง และเราจะไม่รู้เลยว่า URL ที่นำมาโพสต์ URL อะไรในฐานข้อมูล ซึ่งถ่าหากอยากจะ URL มาใช้เราจะต้อง ทำการ View source ออกมา

แต่ทั้งนี้เราก็มีวิธีการสำหรับการที่จะดึง URL ออกมาแสดงโดยเฉาะได้ จาก tag iframe โดยการใช้ preg_match_all() นั้นเอง

ขั้นตอนใช้งาน

1.เราจะต้องดึง ข้อมูลโพสนั้นออกมาจาก ตารางโพสต์ก่อนดังนี้

Code: Select all

       $sql_ary = array(
                'SELECT' => '*',
                'FROM' => array(
                    POSTS_TABLE => 'p',
                ),
                'LEFT_JOIN' => array(
                    array(
                        'FROM' => array(USERS_TABLE => 'u'),
                        'ON' => 'p.poster_id = u.user_id',
                    ),
                    array(
                        'FROM' => array(TOPICS_TABLE => 't'),
                        'ON' => 'p.topic_id = t.topic_id',
                    )
                ),
                'WHERE' => 'post_id = ' . $post_id,
            );
            $sql = $this->db->sql_build_query('SELECT', $sql_ary);
            $result = $this->db->sql_query($sql);
            $row = $this->db->sql_fetchrow($result);
2.จากนั้นทำการแปลง bbcode จาก เนื้อหาข้อโพสต์

Code: Select all

     $parse_flags = ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
            $message = generate_text_for_display($text, $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
3.ทำการค้นหา tag iframe ด้วย preg_match_all() ดังนี้

Code: Select all

    preg_match_all('/<iframe.*src=\"(.*)" frameborder(.*)><\/iframe>/', $message, $output_array);
4.จากนั้น สั่ง print_r เพื่อตรวจสอบ URL

Code: Select all

print_r($output_array['1']);
5.ผลลัพธ์ที่ได้

Code: Select all

https://www.youtube.com/embed/qlUen8xpmTY
ขอให้วันนี้เป็นวันที่ดี
  • Similar Topics
    Replies
    Views
    Last post

Return to “PHP Knowledge”

Who is online

Users browsing this forum: No registered users and 4 guests