php正则过滤特殊字符
时间: 2023-07-26 21:07:10 浏览: 136
可以使用正则表达式中的字符类来匹配特殊字符,下面是一个例子:
```php
$str = "Hello, <script>alert('world');</script>!";
$filtered_str = preg_replace('/[^a-zA-Z0-9]/', '', $str);
echo $filtered_str; // 输出:Helloalertworld
```
上面的代码使用了 preg_replace 函数,将字符串中所有非字母和数字的字符替换为空字符串。正则表达式 `[^a-zA-Z0-9]` 表示匹配任何不是字母和数字的字符。
相关问题
帮我写一个过滤'' "" / and or 的php正则过滤
在PHP中,如果你想编写一个正则表达式来过滤掉双引号(")、单引号(')、斜杠(/)以及其他常见的SQL关键字(如"and", "or")以便于安全地插入到数据库查询中,你可以这样做:
```php
function filter_sql_input($input) {
// 正则表达式模式,匹配双引号、单引号、斜杠和SQL关键字
$pattern = '/["\'\/\s]+|\b(?:and|or)\b/i';
// 使用preg_replace函数替换匹配的内容为空字符串
return preg_replace($pattern, '', $input);
}
$input_to_filter = "Hello 'world'/ and 'OR' something";
$safe_input = filter_sql_input($input_to_filter);
```
在这个例子中,`$pattern` 匹配了双引号(`"`), 单引号(''), 斜杠(`/`),空格(`\s`),以及 "and" 和 "or" 关键字。`i` 标志表示不区分大小写。`preg_replace` 函数将找到的所有匹配项替换为无内容,从而得到一个安全的字符串。
正则过滤去除 JSON 中的 Base64 字段
如果你想从 JSON 字符串中过滤掉所有的 Base64 字段,可以使用正则表达式来实现。以下是一个示例:
```php
$jsonString = '{"name": "John", "age": 30, "photo": "data:image/png;base64,iVBORw0KGg..." }';
// 使用正则表达式过滤掉 Base64 字段
$filteredString = preg_replace('/(".*?")\s*:\s*"data:[^"]+;base64,[^"]+"/', '', $jsonString);
echo $filteredString; // 输出:{"name": "John", "age": 30}
```
在上面的示例中,我们定义了一个 JSON 字符串 `$jsonString`,其中包含一个 Base64 字段。我们使用 `preg_replace` 函数来匹配所有符合正则表达式的字符串,并将其替换为空字符串。最后输出过滤后的字符串 `$filteredString`。
正则表达式 `/(".*?")\s*:\s*"data:[^"]+;base64,[^"]+"/` 的含义是:匹配以双引号包裹的任意字符串作为字段名,后面紧跟着冒号和一个以 `"data:` 开头、`;base64,` 结尾的字符串。这个字符串中间部分是一个 Base64 编码的数据,使用 `[^"]` 来表示除了双引号以外的任意字符。最后的 `/g` 表示全局匹配。
阅读全文