由于今天上午一个项目中,要对前台用户提交的内容进行过滤,只保留特定的字符进行分析,所以收集了一些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() 函数,可以把数组元素组合为一个字符串,具体使用方法可在本站搜索