使用CodeIgniter在表单中转义和显示字符串的正确方法

时间:2013-05-20 14:53:51

标签: php codeigniter escaping

我有一个网页表单,接受有关图书的信息(标题,作者,描述等)。我一直在使用CodeIgniter的活动记录db类来插入信息,并且转义了查询,因为CodeIgniter文档声称已经执行此操作(请参阅here)。

所以这就是问题所在:如果我输入一个标题为“男孩的世界指南”,其中包含撇号,则会将其转义并正确插入数据库。但是,当我以如下形式显示它时:

<input type="text" name="title" <?php if (isset($book)) { echo "value='" . $book->name . "' "; ?> />

它只会显示“A Boy”作为标题。我理解为什么撇号会破坏,并且可以想出多种方法来解决它,但处理这种情况的最合适的方法是什么

一如既往,非常感谢您的时间和知识!

2 个答案:

答案 0 :(得分:6)

您应该可以使用html_escape() CodeIgniter功能:

http://www.codeigniter.com/user_guide/general/common_functions.html?highlight=html_escape#html_escape

它基本上只是htmlspecialchars PHP函数的快捷方式。

答案 1 :(得分:0)

  

在自定义帮助文件中添加此函数

function escape_output($string)
{
    $newString = str_replace('\r\n','<br/>',$string);
    $newString = str_replace('\n\r','<br/>',$newString);
    $newString = str_replace('\r','<br/>',$newString);
    $newString = str_replace('\n','<br/>',$newString);
    $newString = str_replace('\'','',$newString);
    return $newString;
}
  

在视图中调用功能

<?php echo escape_output('Your escaped string here'); ?>