由于今天上午一个项目中,要对前台用户提交的内容进行过滤,只保留特定的字符进行分析,所以收集了一些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.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() 函数,可以把数组元素组合为一个字符串,具体使用方法可在本站搜索
本文PHP 正则保留中文,数字,字母的方法到此结束。放弃是一种智慧、分享是一种美德。小编再次感谢大家对我们的支持!