我在codeigniter中使用TinyMCE制作内容条目。 但是输出源如下所示并且不显示<和>。相反,它显示像HTML&lessthan的HTML内容;和& greaterthan;等。
该条目由管理员在登录后进行。
输出来自数据库。
我在模特中取出逃脱,但它仍然做同样的事情。
我也有配置设置,$ config ['global_xss_filtering'] = FALSE;
所以我想添加html_entity_decode。但$ page_data是一个数组。 该数组具有id,title,content和slug,用于页面项目。
有人能告诉我怎么做吗?
输出示例:
<p><img src="images/icon1.png" border="0"
alt="icon" width="48" height="48" />
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
型号代码:
<?php
class Pagemodel extends Model
{
....
...
/**
* Return an array of a page — used in the front end
*
* @access public
* @param string
* @return array
*/
function fetch($slug)
{
$query = $this->db->query("SELECT * FROM `pages` WHERE `slug` = '$slug'");
return $query->result_array();
}
...
...
}
?>
控制器代码:
function index()
{
$page_slug = $this->uri->segment('2'); // Grab the URI segment
if($page_slug === FALSE)
{
$page_slug = 'home';
}
$page_data = $this->pages->fetch($page_slug); // Pull the page data from the database
if($page_data === FALSE)
{
show_404(); // Show a 404 if no page exists
}
else
{
$this->_view('index', $page_data[0]);
}
}
答案 0 :(得分:1)
如果我找对你,你想通过'html_entity_decode'。到从数据库返回的所有字段。您可以轻松地向fetch函数添加内容:
function fetch($slug)
{
$query = $this->db->query("SELECT * FROM `pages` WHERE `slug` = '$slug'");
for($i=0; $i<$query->num_rows(); $i++)
{
$html_decoded[$i]['id'] = html_entity_decode($query->id);
$html_decoded[$i]['title'] = html_entity_decode($query->title);
$html_decoded[$i]['content'] = html_entity_decode($query->content);
$html_decoded[$i]['slug'] = html_entity_decode($query->slug);
}
return $html_decoded;
}
如果我的问题正确,应该做你想做的事。
答案 1 :(得分:0)
如果您希望避免在结果集上循环,可以使用
的功能array_map()
并做这样的事情:
function fetch( $slug )
{
$query = $this->db->query( "SELECT * FROM `pages` WHERE `slug` = '$slug'" );
return array_map( array( $this, decodearray ), $query->result_array());
}
function decodearray( $myarray ){
return html_entity_decode( $myarray,ENT_QUOTES );
}