- สำหรับผู้ที่กำลังศึกษาพัฒนา
เว็บบอร์ด phpbb นัน คงไม่อาจจะหนีพ้นการใช้ tag ต่างๆ ของ
html เข้ามาช่วยสำหรับการแสดงผล ของ phpbb ที่พัฒนาขึ้นมา ซึ่ง ถึงแม้ว่า เราจะใช้ tag ส่วนใหญ่ไม่กี่ tag ก็ตาม และมีมี tag อีกมากมายที่ไม่ได้นำมาใส่โดยตรงก็ตาม แต่ก็ไม่ใช้ว่าเราจะไม่ต้องใช้ tag เหล่านั้น เพราะบางทีเราจะะไปพบว่า เรามีการใช้ tag เหล่านี้มาจาก ผลลัพธ์ของการใช้งาน bbcode ก็ได้ เช่น การการใช้งาน ะag iframe เพื่อใช้ในการสร้าง
bbcode เพื่อแสดง วิดีโอในโพสต์
- ซึ่งในบางครั่ง การใช่ bbcode เพื่อเขียนโพสต์ นั้น อาจจะมีการเก็บลงในฐานข้อมูลอีกแบบ แต่พอนำมาแสดงก็ได้ผลลัพธ์อีก แบบ ที่มีส่วนต่างจากข้อมูลที่เราเก็บยลงในฐานข้อมูล เช่น การใช้งาน bbcode ที่ผมสร้างขึ้นมาเอง โดยถ้าหากเก็บลงในฐานข้อมูลนั้น จะมีโดด ดังนี้
โค้ด: เลือกทั้งหมด
<br/>
<YOUTUBE content="qlUen8xpmTY"><s>[youtube]</s>qlUen8xpmTY<e>[/youtube]</e></YOUTUBE><br/>
<br/>
แต่หากนำไปแสดงใน html ผลอีกแบบ คือ
แต่เมื่อลองทำการ View source แล้วก็จะเห็นว่าโคดที่แสดงวิด๊โอจะได้ ดังนี้
โค้ด: เลือกทั้งหมด
<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.เราจะต้องดึง ข้อมูลโพสนั้นออกมาจาก ตารางโพสต์ก่อนดังนี้
โค้ด: เลือกทั้งหมด
$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 จาก เนื้อหาข้อโพสต์
โค้ด: เลือกทั้งหมด
$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() ดังนี้
โค้ด: เลือกทั้งหมด
preg_match_all('/<iframe.*src=\"(.*)" frameborder(.*)><\/iframe>/', $message, $output_array);
4.จากนั้น สั่ง print_r เพื่อตรวจสอบ URL
5.ผลลัพธ์ที่ได้
- สำหรับผู้ที่กำลังศึกษาพัฒนา [url=https://www.mindphp.com/บทความ/24-cms-php/157-phpbb-คืออะไร.html]เว็บบอร์ด phpbb[/url] นัน คงไม่อาจจะหนีพ้นการใช้ tag ต่างๆ ของ [url=https://mindphp.com/คู่มือ/73-คืออะไร/2026-html-คืออะไร.html]html[/url] เข้ามาช่วยสำหรับการแสดงผล ของ phpbb ที่พัฒนาขึ้นมา ซึ่ง ถึงแม้ว่า เราจะใช้ tag ส่วนใหญ่ไม่กี่ tag ก็ตาม และมีมี tag อีกมากมายที่ไม่ได้นำมาใส่โดยตรงก็ตาม แต่ก็ไม่ใช้ว่าเราจะไม่ต้องใช้ tag เหล่านั้น เพราะบางทีเราจะะไปพบว่า เรามีการใช้ tag เหล่านี้มาจาก ผลลัพธ์ของการใช้งาน bbcode ก็ได้ เช่น การการใช้งาน ะag iframe เพื่อใช้ในการสร้าง [url=https://www.mindphp.com/คู่มือ/73-คืออะไร/3523-bbcode-บีบีโค้ด-หรือ-bulletin-board-code-บูลลิทิน-บอร์ด-โค้ด-คืออะไร.html]bbcode[/url] เพื่อแสดง วิดีโอในโพสต์
- ซึ่งในบางครั่ง การใช่ bbcode เพื่อเขียนโพสต์ นั้น อาจจะมีการเก็บลงในฐานข้อมูลอีกแบบ แต่พอนำมาแสดงก็ได้ผลลัพธ์อีก แบบ ที่มีส่วนต่างจากข้อมูลที่เราเก็บยลงในฐานข้อมูล เช่น การใช้งาน bbcode ที่ผมสร้างขึ้นมาเอง โดยถ้าหากเก็บลงในฐานข้อมูลนั้น จะมีโดด ดังนี้
[code]
<br/>
<YOUTUBE content="qlUen8xpmTY"><s>[youtube]</s>qlUen8xpmTY<e>[/youtube]</e></YOUTUBE><br/>
<br/>
[/code]
แต่หากนำไปแสดงใน html ผลอีกแบบ คือ
[attachment=0]Selection_999(1805).png[/attachment]
แต่เมื่อลองทำการ View source แล้วก็จะเห็นว่าโคดที่แสดงวิด๊โอจะได้ ดังนี้
[code]
<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>
[/code]
ซึ่งจะเห็นว่า โคดที่เก็บลงในฐานข้อมูลนั้น มีความต่างกับ ส่วนที่แสดงอย่าง และเราจะไม่รู้เลยว่า URL ที่นำมาโพสต์ URL อะไรในฐานข้อมูล ซึ่งถ่าหากอยากจะ URL มาใช้เราจะต้อง ทำการ View source ออกมา
แต่ทั้งนี้เราก็มีวิธีการสำหรับการที่จะดึง URL ออกมาแสดงโดยเฉาะได้ จาก tag iframe โดยการใช้ preg_match_all() นั้นเอง
ขั้นตอนใช้งาน
1.เราจะต้องดึง ข้อมูลโพสนั้นออกมาจาก ตารางโพสต์ก่อนดังนี้
[code]
$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);
[/code]
2.จากนั้นทำการแปลง bbcode จาก เนื้อหาข้อโพสต์
[code] $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);[/code]
3.ทำการค้นหา tag iframe ด้วย preg_match_all() ดังนี้
[code] preg_match_all('/<iframe.*src=\"(.*)" frameborder(.*)><\/iframe>/', $message, $output_array);[/code]
4.จากนั้น สั่ง print_r เพื่อตรวจสอบ URL
[code]print_r($output_array['1']);[/code]
5.ผลลัพธ์ที่ได้
[code]https://www.youtube.com/embed/qlUen8xpmTY[/code]