显示没有\ n \ r \ n的用户输入

时间:2013-08-25 13:14:26

标签: php

我使用函数(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(阿拉伯语)。

1 个答案:

答案 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将无效。