我使用函数(check(removeTags($data))
)将文本保存在mysql
数据库中:
function check($data){
if (get_magic_quotes_gpc()) {
$data = stripslashes($data);
}
$data =addcslashes( mysql_real_escape_string($data) , "%_" );
return $data;
}
function removeTags($data){
$data=trim($data);
$data=strip_tags($data);
return $data;
}
我使用此功能显示上面保存给用户的文字。
function output($data){
return htmlspecialchars($data,ENT_QUOTES,"UTF-8");
}
但不需要的字符会添加到带有newline('<br/>')
的text.replace "\r\n"
。
我使用stripslashes
但它没有用(将'\r\n'
替换为'nr')。
我使用str_replace("\r\n", "<br />",$data)
但它也没有用。
如何删除'\r\n'
?
修改
请参阅此outputting \r\n after text is decoded - PHP。
但用户输入未使用该功能编码(如encode
),用户输入语言为persian
(阿拉伯语)。
答案 0 :(得分:0)
要从字符串使用中删除所有新行字符:
function check($data) {
if (get_magic_quotes_gpc()) {
$data = stripslashes($data);
}
// this will remove all \n\r from output what you asked in question
$data = str_replace(array("\r", "\n"), '', $data);
// in case you want new line in place of \n\r use line below
// $data = nl2br($data);
$data = addcslashes(mysql_real_escape_string($data) , "%_");
return $data;
}
...
确保在干净的用户输入上使用此功能。在addslashes
或其他转义方法之前。转义EOL字符后,“\\ r \\ n”变为“\\ r \\ n”,而str_replace
将无效。