2

codeigniter で TinyMCE でコンテンツエントリを作成しています。ただし、出力ソースは次のようになり、< と > が表示されません。代わりに、&lessthan; のような HTML エンティティが表示されます。とより大きいです。等

エントリは、ログイン後に管理者によって作成されます。

出力はデータベースから取得されます。

モデルでエスケープを取り出しましたが、それでも同じことを行います。

また、構成設定 $config['global_xss_filtering'] = FALSE; があります。

そこで、html_entity_decode を追加したいと思います。しかし、$page_data は配列です。配列には、ページ アイテムに使用される ID、タイトル、コンテンツ、スラッグがあります。

誰か教えてください。


出力例:

&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]);
    }
}
4

2 に答える 2

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

私があなたの質問を正しく理解したなら、それはあなたが望むことをするはずです。

于 2009-10-01T08:53:28.017 に答える
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 );
}
于 2011-10-23T20:07:27.660 に答える