2009-09-28 9 views
2

Je crée une entrée de contenu avec TinyMCE dans codeigniter. Toutefois, la source de sortie est la suivante et ne montre pas < et>. Au lieu de cela, il montre des enties HTML comme & lessthan; et & plusthan; etc.Comment ajouter html_entity_decode à un tableau?

L'entrée se fait par admin après connecté.

sortie est la base de données.

J'ai sorti l'échappement dans le modèle, mais ça fait toujours la même chose.

J'ai également un paramètre de configuration, $ config ['global_xss_filtering'] = FALSE;

Donc je veux ajouter html_entity_decode. Mais le $ page_data est un tableau. Le tableau a un identifiant, un titre, un contenu et un slug qui est utilisé pour l'élément de page.

Quelqu'un pourrait-il me dire comment le faire s'il vous plaît?


Exemple de sortie:

&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. 

Code du modèle:

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


... 
... 

} 

?> 

Code Controller:

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

où vient la sortie vient? De la base de données? Ou de votre point de vue? – Natrium

+0

Méfiez-vous de la suppression de la conversion; il est là pour votre protection. –

+0

@Natrium: Il provient de la base de données et j'ai ajouté le modèle. @Jonathan: Comme j'ai ajouté dans le message original, l'entrée est faite après connecté, donc ça devrait aller. – shin

Répondre

1

Si je vous ai bien compris, vous voulez passer 'html_entity_decode'. à tous les champs qui sont renvoyés depuis votre base de données. Vous pouvez facilement ajouter quelque chose à votre fonction de récupération:

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

Si j'ai bien compris votre question, vous devriez faire ce que vous voulez.

0

Si vous préférez éviter le vélo sur l'ensemble de résultats, vous pouvez utiliser les installations de

array_map() 

et faire quelque chose comme ceci:

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