2

我必须将用户输入的数据编码为 utf-8,特别是如果它是数字编码,所以我决定使用以下代码片段进行编码,然后将其存储到数据库中

$convmap = 数组 (0x80, 0xffff, 0, 0xffff);
$str = htmlentities (mb_encode_numericentity($str, $convmap, 'UTF-8'),ENT_QUOTES,"UTF-8",false);

但 Yii 默认编码仅使用 CHtml::encode() 仅使用 htmlspecialchars() 函数

所以我决定扩展 CHtml 类来覆盖编码函数,但我不知道如何在 Yii 中做到这一点。建议一个很好的方法来扩展 Yii 助手类......

4

2 回答 2

1

你不能完全做到这一点,这个类紧密集成在框架中。(即用于小部件、activaeform 等...),

您可以做的一件事是......扩展它并创建您的类并在整个应用程序中使用它。在将模型数据发送到视图/小部件之前对其进行预处理。

于 2012-09-29T12:58:12.567 回答
1

您总是可以在 中编辑 CHtml 类本身/framework/web/helpers/CHtml.php,为编码方法添加一个额外的参数?例如;

public static function encode($text,$extraEncode=false)
{
    if($extraEncode===true)
    {
        $convmap = array ( 0x80, 0xffff, 0, 0xffff );
        return htmlentities ( mb_encode_numericentity( $text, $convmap, 'UTF-8' ),ENT_QUOTES,"UTF-8",false );
    } else {
        return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset);
    }
}

obv,根据口味编辑。

然后你可以这样称呼它CHtml::encode($myString,true)

于 2012-09-29T14:19:11.630 回答