由于今天上午一个项目中,要对前台用户提交的内容进行过滤,只保留特定的字符进行分析,所以收集了一些PHP中利用正规过滤内容的小方法,整理分享一下,也许你也用得到呢。
PHP preg_match_all() 函数
在开始记录之前,我们要先了解一下 php中的 preg_match_all() 函数
preg_match_all:函数用于执行一个全局正则表达式匹配。
语法:
preg_match_all (pattern,subject,matches)
参数:
pattern:必需,要搜索的模式,字符串形式。
subject:必需,输入字符串。
matches:必需,多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。
PHP 正规只保留中文,数字,字母代码
正则表达式:
/[x{4e00}-x{9fa5}a-zA-Z0-9]/u
示例代码:
$str = '免费资源网(http://www.freexyz.cn),作者,菜鸟,建立于2016年@#&*$)@*@&*&#$'; preg_match_all('/[x{4e00}-x{9fa5}a-zA-Z0-9]/u',$str,$result); echo join('',$result[0]);
输出结果:
免费资源网httpwwwfreexyzcn作者菜鸟建立于2016年
PHP 正规只保留中文
正则表达式:
/[x{4e00}-x{9fff}]+/u
示例代码:
$str = '免费资源网(http://www.freexyz.cn),作者,菜鸟,建立于2016年@#&*$)@*@&*&#$'; preg_match_all('/[x{4e00}-x{9fff}]+/u',$str,$result); echo join('',$result[0]);
输出结果:
免费资源网作者菜鸟建立于年
PHP 正规只保留数字
正规表达式:
/d+/
示例代码:
$str = '免费资源网(http://www.freexyz.cn),建立于2016年@#&*$)@*@&*&#$'; preg_match_all('/d+/',$str,$result); echo join('',$result[0]);
输出结果:
2016
PHP 正规保留字母
正则表达式:
/[a-zA-Z]+/
示例代码:
$str = '免费资源网http://www.freexyz.cn'; preg_match_all('/[a-zA-Z]+/',$str,$result); echo join('',$result[0]);
输出结果:
httpwwwfreexyzcn
PS:补充点
1、以上测试代码,都是在 utf-8 编码下测试的,如果用的其它的类型的编码,可能会出现乱码
2、join() 函数,可以把数组元素组合为一个字符串,具体使用方法可在本站搜索