nl2br没有在onical summary line feed上工作“\ n”

时间:2011-05-18 07:34:58

标签: php mysql string icalendar

我正在收集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);

2 个答案:

答案 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格式化。