我有一个文本输入,其中可以包含需要转义的特殊字符。但是我也想保留换行符。使用PHP的mysql_real_escape_string(),如何避免转义换行符('\ n')。
来自mysqli_real_escape_string
上PHP的官方docs:
mysqli_real_escape_string ( mysqli $link , string $escapestr ) : string
escapestr:要转义的字符串。
编码的字符为NUL(ASCII 0),\ n,\ r,\,',“和Control-Z。
如何从此列表中省略\n
却保持其他完整无缺?
答案 0 :(得分:1)
解决方案1: 您可以通过以下方式实现此目标:
\n
将字符串分解为数组。\n
作为胶水将它们放回去。代码:
<?php
$array = explode('\n',$stringToEscape);
$index = 0;
foreach($array as $string){
$array[$index] = mysqli_real_escape_string ( $link , $string) ;
$index++;
}
$excapedString = implode('\n',$array);
?>
解决方案2: 另一个解决方案:
\n
(例如# NEWLINE #)。\n
。代码:
<?php
$string = '##YOUR STRING TO BE ESCAPED##';
$stringToEscape = str_replace('\n','#_NEWLINE_#',$string);
$escapedString = mysqli_real_escape_string ( $link , $stringToEscape ) ;
$finalString = str_replace('#_NEWLINE_#','\n',$escapedString);
?>
答案 1 :(得分:0)
您可以像这样使用自定义转义功能:
function my_escape_function($value)
{
$search = array("\\", "\x00", "\r", "'", '"', "\x1a");
$replace = array("\\\\","\\0", "\\r", "\'", '\"', "\\Z");
return str_replace($search, $replace, $value);
}