2011-05-18 26 views
0

我正在收集PHP中的一个ical事件的摘要。问题是,摘要包含换行符\n,我想在插入事件时用<br>替换它们。nl2br不适用于实际的摘要换行“ n”

在我的PHPMyAdmin转义概要后,我看到字符\n,但没有转义概要我看不到字符\n。但是,如果不逃避,我可以看到真正的实际换行符。我需要避开专门的总结来使我的数据库安全。在两种情况下使用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

忽略我以前的评论。请注意'nl2br()'会在\ r \ n,\ n \ r,\ n和\ r之前注入'
'标签,它不会替换它们。这是问题吗? – 2011-05-18 08:24:05

回答

0

HRM,怎么样读手册页,我的朋友? 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

问题是关于用'
'替换'\ n'而不是转义 – einstein 2011-05-18 07:42:23

0

你可以做到这一点的其他方式:

//with escaping 
$title = nl2br($title); 
$title = mysql_real_escape_string($vevent->getProperty('summary')); 

但你不应该需要前nl2br 调用插入到数据库中。将数据输出到浏览器时最好做nl2br。这样,您可以将实际数据存储在数据库中(以后可以在其他情况下使用)并在输出前使用HTML对其进行格式化。

+0

nl2br仍然对此解决方案不起作用 – einstein 2011-05-18 07:47:36