PHP转义函数

string preg_quote( string $str[, string $delimiter] )

找出$str字符串中出现的属于正则表达式的特殊字符,并在改特殊字符前面加上一个反斜线。

可以提供一个可选的$delimiter字符串参数作为新增的转义字符集合。

正则表达式的特殊字符包括: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : 。

string addslashes( string $str )

在要写入到数据库的字符串中的特殊字符上添加反斜线,这些字符有单引号(‘)、双引号(“)、反斜线(\)与NULL(NULL字符)。

当php.ini的指令magic_quote_gpc = On时,意味着当写入数据到数据库时,数据中的特殊字符会自动加上一个反斜线。可以使用get_magic_quotes_gpc()函数进行检测magic_quote_gpc是否打开。PHP官方建议将magic_quote_gpc的值设为Off,因为这个配置的打开可能带来一定的安全问题,最好以手工的方式对写入到数据库的数据进行处理。

string addcslashes( string $str, string $charlist )

以C语言的风格转义字符串。$charlist参数提供给函数一个需要转义的字符集,也就是说,你可以把想要转义的字符提供给$charlist字符串参数。如果要转义a到z之间的所有英文字母,可以以a..z的形式书写参数。使用该函数的时候要注意C语言中预定义的转义序列。

### PHP中的转义与解码函数PHP中,提供了多种用于字符串转义和解码的内置函数。这些函数可以满足不同的需求场景。 #### 常见的转义函数 1. **`addslashes()`** - `addslashes()` 函数返回在预定义字符之前添加反斜杠后的字符串。它主要用于处理SQL查询语句中的特殊字符[^1]。 2. **`htmlspecialchars()`** - 此函数将转换一些预定义的字符为HTML实体。这有助于防止XSS攻击,适用于输出到浏览器的内容[^3]。 3. **`urlencode()` 和 `rawurlencode()`** - 这两个函数都用来编码URL字符串。其中,`urlencode()` 使用RFC 3986标准进行编码,而`rawurlencode()`则遵循更严格的RFC 3986规定[^2]。 4. **自定义正则表达式替换** - 对于复杂的转义需求,可以通过调用Smarty插件中的`modifier.regex_replace`来实现特定模式下的字符串替换操作。 以下是几个常用转义函数的例子: ```php <?php // Example of addslashes() $original_str = "O'Reilly & Associates"; $escaped_str = addslashes($original_str); echo $escaped_str; // Outputs: O\'Reilly \& Associates // Example of htmlspecialchars() $text = '<p>Test paragraph.</p>'; $safe_text = htmlspecialchars($text, ENT_QUOTES | ENT_HTML5, 'UTF-8'); echo $safe_text; // Outputs: <p>Test paragraph.</p> // Example of urlencode() $query_string = 'name=John Doe&age=25'; $url_encoded_query = urlencode($query_string); echo $url_encoded_query; ?> ``` #### 解码函数 相对应地,在PHP中有相应的解码函数可用: 1. **`stripslashes()`** - 它的作用正好相反於`addslashes()`,即移除由`addslashes()`加上的反斜线。 2. **`htmlspecialchars_decode()`** - 将先前通过`htmlspecialchars()`转换过的HTML实体重新变回原来的字符。 3. **`urldecode()` 和 `rawurldecode()`** - 分别对应着`urlencode()`以及`rawurlencode()`的功能逆向过程。 下面展示了解码的一些实例: ```php <?php // Example of stripslashes() $escaped_str = "O\\'Reilly \\& Associates"; $unescaped_str = stripslashes($escaped_str); echo $unescaped_str; // Outputs: O'Reilly & Associates // Example of htmlspecialchars_decode() $safe_text = '<p>Test paragraph.</p>'; $text = htmlspecialchars_decode($safe_text, ENT_QUOTES | ENT_HTML5); echo $text; // Outputs: <p>Test paragraph.</p> // Example of urldecode() $url_encoded_query = '%7B%22name%22%3A%20%22John%20Doe%22%2C%20%22age%22%3A%2025%7D'; $query_string = urldecode($url_encoded_query); echo $query_string; ?> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值