
PHP怎样过滤中文状态下特殊字符(比如标点符号)?
2个回答
推荐于2017-12-16
展开全部
function filterGBK_SpecialChars($str)
{
$str =urlencode($str);//将关键字编码
//下面的必须写在一行,不可换行截断
$str=preg_replace("/(%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|
%2A|%28|%29|%2B|%7C|%5C|%3D|\-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|
%3F|%3E|%3C|%2C|\.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|
%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|
%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1|%A1%AB|%A3%FB|%A3%FD|%A1%BE|
%A1%BF|)+/",'',$str);
$str =urldecode($str);//将过滤后的关键字解码
return $str;
}
$str='广~·@#¥%……&*()——+|-=、{}【】:;“”‘’~“《》,。?、州;?海【,鲜。餐“”】(,厅) ';
echo filterGBK_SpecialChars($str);
展开全部
PHP 中的 htmlspecialchars()、preg_replace() 函数可以实现
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
htmlspecialchars(string,quotestyle,character-set)
参数说明
string 必需。规定要转换的字符串。
quotestyle 可选。规定如何编码单引号和双引号。
ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
preg_replace() 执行一个正则表达式的搜索和替换
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement进行替换.
pattern
要搜索的模式. 可以使一个字符串或字符串数组.
可以使用一些PCRE修饰符, 包括'e'(PREG_REPLACE_EVAL), 可以为这个函数指定.
replacement
用于替换的字符串或字符串数组.
例如:
<?php
$str = "<strong>字符字符字符字符字符字符';\t\r</strong>";
$str = preg_replace("/\'/",'',$str);
echo htmlspecialchars($str);
?>
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
htmlspecialchars(string,quotestyle,character-set)
参数说明
string 必需。规定要转换的字符串。
quotestyle 可选。规定如何编码单引号和双引号。
ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
preg_replace() 执行一个正则表达式的搜索和替换
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement进行替换.
pattern
要搜索的模式. 可以使一个字符串或字符串数组.
可以使用一些PCRE修饰符, 包括'e'(PREG_REPLACE_EVAL), 可以为这个函数指定.
replacement
用于替换的字符串或字符串数组.
例如:
<?php
$str = "<strong>字符字符字符字符字符字符';\t\r</strong>";
$str = preg_replace("/\'/",'',$str);
echo htmlspecialchars($str);
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询