2009-09-28 3 views
2

Я делаю запись контента с TinyMCE в codeigniter. Однако источник вывода выглядит следующим образом и не показывает < и>. Вместо этого он отображает HTML-файлы, такие как & lessthan; и & больше; и т.д.Как добавить html_entity_decode в массив?

Запись производится администратором после авторизованы.

выход поступает из базы данных.

Я выбрал побег в модели, но он по-прежнему делает то же самое.

Также у меня есть настройка конфигурации, $ config ['global_xss_filtering'] = FALSE;

Поэтому я хочу добавить html_entity_decode. Но $ page_data - это массив. В массиве есть id, заголовок, контент и slug, который используется для элемента страницы.

Может ли кто-нибудь сказать мне, как это сделать, пожалуйста?


Выходной пример:

&lt;p&gt;&lt;img src=&quot;images/icon1.png&quot; border=&quot;0&quot; 
alt=&quot;icon&quot; width=&quot;48&quot; height=&quot;48&quot; /&gt; 
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

где же выход взялось? Из базы данных? Или с вашего взгляда? – Natrium

+0

Остерегайтесь подавления конверсии; это для вашей защиты. –

+0

@Natrium: Он поступает из базы данных, и я добавил модель. @Jonathan: Как я добавил в исходном посте, запись выполняется после входа в систему, поэтому все должно быть в порядке. – shin

ответ

1

Если я правильно вас понял, вы хотите передать «html_entity_decode». ко всем полям, которые возвращаются из вашей базы данных. Вы можете легко добавить что-то к вашей выборки функции:

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; 
} 

Если бы я получил свой вопрос права, которые должны делать то, что вы хотите.

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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^