3

我有一个 Web 表单,它接受有关一本书的信息(标题、作者、描述等)。我一直在使用 CodeIgniter 的活动记录 db 类来插入信息,并且没有转义查询,因为 CodeIgniter 文档声称已经这样做了(请参阅此处)。

所以这就是问题所在:如果我输入一个像“A Boy's Guide To The World”这样的标题,其中有一个撇号,它会被转义并正确插入到数据库中。但是,当我以如下形式显示它时:

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

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

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

4

2 回答 2

8

您应该能够使用html_escape()CodeIgniter 函数:

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

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

于 2013-05-20T15:23:04.837 回答
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'); ?>
于 2017-01-11T12:10:40.257 回答