首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP quotemeta() 函數詳解:為特殊字符自動添加反斜杠轉義

     編輯:PHP 綜合知識

函數簡介

quotemeta(string $string): string 會在字符串中具有特殊正則含義的字符前自動插入反斜杠 (\),返回轉義後的新字符串。這在構建動態正則表達式、SQL 片段或 Shell 命令時極為實用,能防止元字符被誤解析。

預定義轉義字符列表

  • 句號 .
  • 反斜杠 \
  • 加號 +
  • 星號 *
  • 問號 ?
  • 方括號 []
  • 脫字符 ^
  • 美元符 $
  • 圓括號 ()

語法與參數

quotemeta(string $string): string

參數:$string - 需要轉義的輸入字符串。
返回值:轉義後的字符串。

示例代碼

<?php
$str = "Hello world. (can you hear me?)";
echo quotemeta($str);
// 輸出:Hello world\. \(can you hear me\?\)
?>

實際應用場景

1. 動態構建正則表達式

$keyword = "user(name)?";
$pattern = '/^' . quotemeta($keyword) . '$/'; // 精確匹配字面量 "user(name)?"

2. SQL LIKE 子句通配符轉義

$search = "100%";
$safe = quotemeta($search); // 100\%
$sql = "SELECT * FROM products WHERE name LIKE '%$safe%'";

3. 反轉義:stripslashes()

若需還原,可用 stripslashes() 移除由 quotemeta() 或 addslashes() 添加的反斜杠。

$escaped = quotemeta($str);
$original = stripslashes($escaped);

注意事項

  • 僅針對上述 10 個字符,不處理其他字符(如單雙引號、斜杠 / 等)。
  • 不適用於資料庫參數化查詢:防 SQL 注入請優先使用預處理語句,而非字符串轉義。
  • 編碼無關:函數按字節處理,對 UTF-8 多字節字符安全(不會拆分多字節字符)。

總結

quotemeta() 是 PHP 內建的輕量級字面量轉義工具,適合快速將用戶輸入或變量值安全嵌入正則、SQL LIKE、Shell 命令等上下文。記住它的轉義字符集固定且有限,複雜場景請改用專用轉義函數(如 preg_quote()、mysqli_real_escape_string()、escapeshellarg())。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved