0

我正在使用带有 IIS6 和 CodeIgniter 框架的 PHP (5.2.13),并且我正在使用 html_entities_decode 处理来自数据库的打印数据问题。例如:

<?php

echo html_entity_decode($somedata,ENT_QUOTES,"UTF-8");
echo "Hello";

?>

$somedata 是 $data["informativo"][0]->texto 和 texto 是一些 html(html 有时与 xml 混合)代码。

问题是没有显示回显“Hello”,实际上 $somedata 并没有打印所有内容。回声之后的所有缓冲区也没有显示。

CodeIgniter 的输出类可能是这个问题吗?


我发现实际上查询并没有带来一切。数据库是 MSSQL Server 2005,字段 texto 是长文本。

查询的代码是:

<?php
    public function getInformativo($idInformativo)
    {
        $sql = "SELECT titulo,texto,secao,usu_atualizacao,data_atualizacao,inativo
                FROM PI_Informativo
                WHERE idInformativo = '".$idInformativo."'";
        return $this->db->query($sql)->result();    
    }
?>

texto 字段只带来了该长文本的一部分。sql 驱动程序是 ODBC。

但是为什么 $somedata 回显后的其余 php 没有显示?在控制器中,任何加载的视图都丢失了。


我刚刚找到了答案。我与数据库的连接使用 ODBC,我需要指定更大的长字节大小:

ini_set("odbc.defaultlrl", "100K");
4

1 回答 1

1

请尝试为此使用助手,更多信息可以在这里找到

//example from the site

$string="Joe's \"dinner\"";
$string=quotes_to_entities($string); //results in "Joe&#39;s &quot;dinner&quot;"

我刚发现这个

- * In some versions of PHP the native function does not work
- * when UTF-8 is the specified character set, so this gives us
- * a work-around.  More info here:
- * http://bugs.php.net/bug.php?id=25670
- *
- * NOTE: html_entity_decode() has a bug in some PHP versions when UTF-8 is the
- * character set, and the PHP developers said they were not back porting the
- * fix to versions other than PHP 5.x.

CI 中的解决方法应该是加载安全库并像这样使用它

$this->load->library('security');
return $this->security->entity_decode($str, $charset);
于 2013-09-20T18:32:57.630 回答