由于今天上午一个项目中,要对前台用户提交的内容进行过滤,只保留特定的字符进行分析,所以收集了一些PHP中利用正规过滤内容的小方法,整理分享一下,也许你也用得到呢。

php保留中文,php保留数字,php保留字母,php正则过滤,preg_match_all() 函数

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.feiniaomy.com),作者,墨初,建立于2016年@#&*$)@*@&*&#$';
preg_match_all('/[\x{4e00}-\x{9fa5}a-zA-Z0-9]/u',$str,$result);
echo join('',$result[0]);

输出结果:

飞鸟慕鱼博客httpwwwfeiniaomycom作者墨初建立于2016年

PHP 正规只保留中文

正则表达式:

/[\x{4e00}-\x{9fff}]+/u

示例代码:

$str = '飞鸟慕鱼博客(http://www.feiniaomy.com),作者,墨初,建立于2016年@#&*$)@*@&*&#$';
preg_match_all('/[\x{4e00}-\x{9fff}]+/u',$str,$result);
echo join('',$result[0]);

输出结果:

飞鸟慕鱼博客作者墨初建立于年

PHP 正规只保留数字

正规表达式:

/\d+/

示例代码:

$str = '飞鸟慕鱼博客(http://www.feiniaomy.com),建立于2016年@#&*$)@*@&*&#$';
preg_match_all('/\d+/',$str,$result);
echo join('',$result[0]);

输出结果:

2016

PHP 正规保留字母

正则表达式:

/[a-zA-Z]+/

示例代码:

$str = '飞鸟慕鱼博客http://www.feiniaomy.com';
preg_match_all('/[a-zA-Z]+/',$str,$result);
echo join('',$result[0]);

输出结果:

httpwwwfeiniaomycom

PS:补充点

1、以上测试代码,都是在 utf-8 编码下测试的,如果用的其它的类型的编码,可能会出现乱码

2、join() 函数,可以把数组元素组合为一个字符串,具体使用方法可在本站搜索