我正在使用 codeigniter,目前我遇到了一些问题。当我将 iframe(来自 youtube)插入 View 文件中的数据库时,我得到如下行代码:
<iframe width="420" height="315" src="http://www.youtube.com/embed/aWvcNkRJhHw" frameborder="0" allowfullscreen></iframe>
如何将iframe插入db并正确显示?
编辑部分:
插入表格:
<h3>Create News</h3>
<?php echo form_open('news/create_news') ?>
<label for="title">Title</label><input type="text" name="title" class="inputBox" id="title"><br>
<label for="body">Text</label><textarea name="body" class="inputBox" id="body" rows="5"></textarea>
<label for="datepicker">Date</label><input type="text" name="date" class="inputBox" id="datepicker">
<input type="submit" name="submit" value="Create" class="submit" />
<input type="reset" class="button standard" value="Clear" />
<?php echo form_close() ?>
插入函数:
function create_news()
{
$data = array(
'title' => $_POST['title'],
'body' => $_POST['body'],
'date' => $_POST['date']
);
$this->db->insert('news', $data);
}
我尝试从 youtube 插入 iframe(嵌入视频),但效果不太好。当我加载 View 文件时,我只得到文本而不是视频 ()。
Controller 功能:
function news() {
$this->load->helper('text');
if ($this->session->userdata('is_logged_in') == true) {
$q = $this->news_model->get_all();
if ($q == false) {
$data['np'] = 'There is no news at the moment.';
} else {
$data['news'] = $q;
}
$this->pagg();
$data['main_content'] = 'admin_news';
$data['title'] = 'Admin News';
$this->load->view('admin/template', $data);
} else {
$this->index();
}
}
查看文件:
<div id="news">
<?php if (isset($np)) { echo '<p>' . $np . '</p>'; } ?>
<?php if (isset($news)) : ?>
<?php foreach ($news as $row) : ?>
<div class="borderBott col_12">
<h3><a href="<?php echo base_url() ?>admin/news_update/<?php echo $row['title'] . "/" . $row['id_news'] ?>" ><?php echo $row['title'] ?></a></h3>
<p class="<?php echo alternator('par', 'nepar') ?>"><?php echo word_limiter($row['body'], 50); ?></p>
<p>Date written: <?php echo $row['date'] ?></p>
<a href="#" class="delete" id="<?php echo $row['id_news'] ?>">Delete News</a>
</div>
<?php endforeach; ?>
<?php endif; ?>
最佳答案
正如 NullUserException 所建议的,将整个 iframe 标记存储在数据库中并不是一个好主意。
首先也是最重要的一点:它很丑。您在数据库中存储布局相关数据。永远不要这样做。如果您决定想要不同的默认宽度和高度怎么办?您需要编辑数据库中的所有现有记录。
其次,如果 YouTube 更改其嵌入代码,您的所有数据都将变得毫无用处。
IMO 正确的解决方案是从 iframe 中提取视频 ID 并将其存储在数据库中。
但是,如果我的假设是正确的,并且您有一篇新闻文章中嵌入了视频,则您需要查看 BBCode机制。您的 HTML 存储为纯文本,因此在简单地从数据库输出值时无法正确呈现。通过使用 BBCode 等机制,您可以定义要存储在数据库中的自定义标签(通常用直括号“[]”括起来)。
再次显示数据后,您的所有标记都会转换回正确的 HTML,您将获得嵌入的视频!
CodeIgniter 有几个助手: BBCode Helper或Another BBCode Helper 。 (注意:这些是助手的真实姓名,我并不是想搞笑:))。
在我的 CI 应用程序中,我总是使用 Smarty 模板引擎,它还提供 BBCode 帮助程序,所以我从未使用过上述任何一个。
HTH。
关于php - 将 iframe 插入 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7500251/