-3

我使用函数 ( 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");
}

但是不需要的字符被添加到 text.replacenewline('<br/>')"\r\n"

我使用stripslashes但它没有用(替换'\r\n'为 'nr' )。

我用过str_replace("\r\n", "<br />",$data),但也没有用。

我怎样才能删除'\r\n'


编辑

在文本解码后看到这个输出 \r\n - PHP 。

但用户输入未使用该功能(like encode)编码,用户输入语言为persian(阿拉伯语)。

4

1 回答 1

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" 并且str_replace不会对它们起作用。

于 2013-08-25T13:56:27.527 回答