- ซึ่งในบางครั่ง การใช่ 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 ออกมาแสดงโดยเฉาะได้ จาก 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);
โค้ด: เลือกทั้งหมด
$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);
โค้ด: เลือกทั้งหมด
preg_match_all('/<iframe.*src=\"(.*)" frameborder(.*)><\/iframe>/', $message, $output_array);
โค้ด: เลือกทั้งหมด
print_r($output_array['1']);
โค้ด: เลือกทั้งหมด
https://www.youtube.com/embed/qlUen8xpmTY