[英]escape special character from string in php
我們正試圖從我們的字符串中轉義一些特殊字符,請告訴我我們必須使用的函數,例如 HTC Desire 210 – White
在此示例中,我們轉義 -(連字符)特殊字符。 在上面的示例中,我們有很多具有不同特殊字符的產品名稱,我們對其進行了轉義。 謝謝你的合作。
在此函數中傳遞字符串。
function clean($string){
$string = str_replace(' ', '-', $string); // Replaces spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
有關更多信息,請檢查此刪除特殊字符 - Stackoverflow
例如,您可以使用str_replace ;
str_replace(array(':', '-', '/', '*'), '', $string);
mysqli_real_escape_string() 函數轉義字符串中的特殊字符以用於 SQL 語句。
句法:
mysqli_real_escape_string(connection,escapestring);
示例轉義字符串中的特殊字符:
<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$firstname', '$lastname', '$age')";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
連接必需。 指定要使用的 MySQL 連接
轉義字符串必需。 要轉義的字符串。 編碼的字符為 NUL (ASCII 0)、\n、\r、\、'、" 和 Control-Z。
如果您需要轉義會破壞正則表達式 / PCRE 函數(例如preg_match()
)的字符(如果未轉義),則可以使用preg_quote()
例如,假設您的針和干草堆是:
$needle = "needle(";
$haystack = "ibivfdubdvwbneedle(cihbdhcbds";
以下preg_match()
將引發警告:
var_dump(preg_match("/" . $needle . "/", $haystack)); -----> WARNING preg_match(): Compilation failed: missing ) at offset 7 on line number 9 bool(false)
因為左括號是正則表達式語法中使用的字符。 但是,如果你在 needle 上使用preg_quote()
,左括號將被轉義,正則表達式檢查將執行:
var_dump(preg_match("/" . preg_quote($needle) . "/", $haystack)); ----> int(1)
更多關於preg_quote()
的討論在這里。
使用系統函數 $city = $mysqli->real_escape_string($city);
如果您想將字符串用於數據庫的SQL 操作,那么您可以使用函數mysqli_real_escape_string()轉義 mysqli 中的特殊字符。
句法:
mysqli_real_escape_string(連接,轉義字符串);
例子:
<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// escape variables for security
$your_string = 'string "hi" ';
$escaped_string = mysqli_real_escape_string($con, $your_string);
$sql = 'select * from tablename where fields like "%'.$escaped_string. '%" ';
$result = $conn->query($sql);
//here you can iterate over result array for displaying result
?>
您可以使用addslashes()來轉義字符串,它返回一個在字符之前添加反斜杠的字符串,例如:
但是addslashes()
對sql 注入有一些漏洞,詳細請看這個問題Examples of SQL Injections throughaddslashes() 的答案,所以如果你在做數據庫操作,最好使用mysqli_real_escape_string()
函數。
或者,如果要轉義正則表達式的字符,則可以使用preg_quote ( string $str [, string $delimiter = NULL ] ) ,它將反斜杠放在作為正則表達式語法一部分的每個字符的前面。 正則表達式字符是: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
注意:但要小心preg_quote()
不會轉義single(')
或double quote(")
。
您可以使用addcslashes()
。
在第二個參數中給出的字符之前返回一個帶有反斜杠的字符串
<?php
echo addcslashes("union [", '+,-,[,]');
// output: union \[
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.