PHP怎样过滤中文状态下特殊字符(比如标点符号)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP怎样过滤中文状态下特殊字符(比如标点符号)?相关的知识,希望对你有一定的参考价值。

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);

参考技术A 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);
?>

DOS 命令中怎样将一个特殊字符设置成普通符号

比如 =号 ,DOS命令里有,但想把它当成一般的符号。
例:ren 2013总结.doc 2013==总结.doc
目的是将 2013总结.doc 重命名为 2013==总结.doc ,但这样写批命令是错误的。

因有大量文件想做类似操作,求大师指点!

参考技术A 加引号即可,就像phenixtail说的那样就行。
但是记住,DOS不像是Linux那样,有丰富的引号使用方法。在DOS中,通常只有双引号有这样的功能,单引号不行。
参考技术B 加引号。 例:ren 2013总结.doc "2013==总结.doc"本回答被提问者采纳

以上是关于PHP怎样过滤中文状态下特殊字符(比如标点符号)?的主要内容,如果未能解决你的问题,请参考以下文章

php 如何过滤 单引号 双引号 $ < > 等N种特殊符号?谢谢

请问在Matlab中怎样输入特殊符号啊或者上标、下标?

DOS 命令中怎样将一个特殊字符设置成普通符号

PHP GET参数特殊符号有啥规律?

怎样将中文字符和特殊符号转换成html实体字符

PHP 过滤特殊符号