[英]How to use mysqli_real_escape_string() in PHP to escape all characters except newline?
我有一個文本輸入,其中可以包含需要轉義的特殊字符。 但是我也想保留換行符。 使用PHP的mysql_real_escape_string(),如何可以避免換行符('\\ n')的轉義。
從PHP的官方文檔 (關於mysqli_real_escape_string
:
mysqli_real_escape_string ( mysqli $link , string $escapestr ) : string
escapestr:要轉義的字符串。
編碼的字符為NUL(ASCII 0),\\ n,\\ r,\\,',“和Control-Z。
如何從此列表中省略\\n
但保持其他完整無缺?
解決方案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);
?>
您可以像這樣使用自定義轉義功能:
function my_escape_function($value) { $search = array("\\\\", "\\x00", "\\r", "'", '"', "\\x1a"); $replace = array("\\\\\\\\","\\\\0", "\\\\r", "\\'", '\\"', "\\\\Z"); return str_replace($search, $replace, $value); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.