我正在收集PHP中的一个事件摘要。问题是,摘要包含换行符\n
,我想在插入事件时用<br>
替换它们。
在我的PHPMyAdmin中,在转义摘要后,我看到了字符\n
,但是如果没有转义摘要,我就看不到字符\n
。但是,如果没有逃避,我可以看到真正的实际换行符。我需要逃避ical摘要以使我的数据库安全。使用nl2br功能在两种情况下都不起作用?为什么呢?
CODE:
//without escaping
$title = $vevent->getProperty('summary');//Object method which retrieves the summary of an event
$title = nl2br($title);
//with escaping
$title = mysql_real_escape_string($vevent->getProperty('summary'));
$title = nl2br($title);
答案 0 :(得分:0)
嗯,我的朋友,阅读手册页面怎么样? http://php.net/manual/en/function.mysql-real-escape-string.php说
mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,它将反斜杠添加到以下字符:\ x00,\ n,
您的换行符已经被SQL转义。所以你以前需要nl2br。
我给大家一般的咆哮:为什么你在2011年使用mysql扩展?它在五年前就已经过时了。使用mysqli或PDO和准备好的语句,然后你不必担心转义。
答案 1 :(得分:0)
你可以反过来做到这一点:
//with escaping
$title = nl2br($title);
$title = mysql_real_escape_string($vevent->getProperty('summary'));
但是在插入数据库之前,您不需要调用nl2br 。将数据输出到浏览器时,最好执行nl2br。这样就可以将实际数据存储在数据库中(以后可以在其他上下文中使用),并在输出之前用HTML格式化。