PHP内置字符簇
web PHP 2019-04-10 362 0
关于本站

淘淘IT

记录工作学习中的点点滴滴

本站创建于2017年,用于记录工作和学习中遇到的问题。同时,不断提升网站的使用体验,增加新的功能。

823052 1216 12
最新评论
感谢大佬解决了我的问题
评 留言
11111111111111111111ewqr :ku:
评 留言
@xiaoniba 好像是编码GBK和utf-8的区别,请看下我摘抄的一篇文章,里面有介绍http://taotaoit.com/article/details/885.html,你可以尝试下是否可以
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
\x7f-\xff 这个匹配什么东东,会不会出现安全问题??? 改成这样如何 if ($strict && !preg_match('/^[\w\.\*\x{4e00}-\x{9fa5}]+$/u', $key)) {
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
完美解决 牛逼
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
文章标签更多
ThinkPHP (119)
Mysql (25)
DedeCms (28)
jQuery (27)
证件照 (1)
setInc (3)
setDec (3)
onclick (3)
打开边栏(ESC) 关闭边栏(ESC)
1、定义

比如在web编程应用的时候,常常需要检查一个字符串是否"合法", 这样的例子,如手机号码必须是由数字组成,Email的格式是否正确,用户输入的密码是否由英文和数字组成等等。如果要实现这样的验证功能,有时候会对每一个字符都进行检查,或者将每个字符和分隔符全部写出组成一个正则表达式,显然不是一个好办法,因为对每个字符进行遍历,不仅耗时耗力,而且效率也比较低下。所以PHP提供了一种比较方便的定义一个字符集合的办法,这种集合,一般就称为字符簇,一般是用方括号[ ]把字符簇括起来。这样我就可以比较方便的进行正则表达式的应用和过滤了

2、常用字符簇对应的含义 
[[:alpha:]] 
    任何字母 
[[:digit:]] 
    任何数字 
[[:alnum:]] 
    任何字母和数字 
[[:space:]] 
    任何空白字符 
[[:upper:]] 
    任何大写字母 
[[:lower:]] 
    任何小写字母 
[[:punct:]] 
    任何标点符号 
[[:xdigit:]] 
    任何16进制的数字,相当于[0-9a-fA-F] 
[[:cntrl:]]
    任何ASCII值小于32的字符
[[:blank:]]
    任何空格和TAB
[[:graph:]]
    任何可打印字符
[[:print:]]
    任何可打印字符和空格
[[:<:]]
    匹配单词的开始
[[:>:]]
    匹配单词的结尾
3、使用案例:

<?php
function testPreg($text) {
    $text = preg_replace("/[^[:alpha:]]/u", "", $text); // 过滤 任何字母 // 返回字母
    $text = preg_replace("/[^[:digit:]]/u", "", $text); // 过滤 任何数字 // 返回数字,以下等同
    $text = preg_replace("/[^[:alnum:]]/u", "", $text); // 过滤 任何字母和数字 
    $text = preg_replace("/[^[:space:]]/u", "", $text); // 过滤 任何空白字符  
    $text = preg_replace("/[^[:upper:]]/u", "", $text); // 过滤  任何大写字母
    $text = preg_replace("/[^[:lower:]]/u", "", $text); // 过滤  任何小写字母
    $text = preg_replace("/[^[:punct:]]/u", "", $text); // 过滤 任何标点符号
    $text = preg_replace("/[^[:xdigit:]]/u", "", $text); // 过滤  任何16进制的数字
    $text = preg_replace("/[^[:cntrl:]]/u", "", $text); // 过滤   任何ASCII值小于32的字符
    $text = preg_replace("/[^[:blank:]]/u", "", $text); // 过滤   任何空格和TAB
    $text = preg_replace("/[^[:graph:]]/u", "", $text); // 过滤  任何可打印字符
    $text = preg_replace("/[^[:print:]]/u", "", $text); // 过滤  任何可打印字符和空格
    return $text; // 返回正则过滤后的文本
}
$text = "ajdkl&(&*13241ADdsfsd324";
echo $text . '<br>';
echo testPreg($text);
?>

版权声明:本篇文章来源于网络。 来源链接

相关推荐
openssl_private_decrypt解密失败
PHP | 2019-01-16 2037
复制别人的解密程序,原程序可以解密,复制过来就不可以 一步步尝试发现,秘钥换行符有区别, 原秘钥有换行符,复制过来不知道什么时候把换行符清空了,成了一行字符串了。
那三个特殊字符的ascii码239,187,191就是BOM头的 EF BB BF
PHP | 2019-01-24 1667
原问题 字符串长度问题 vardump打印一字符串 string(14) "00107042012" 获取到的字符串长度怎么是14 明明是11个数字啊! 为什么? 回答: 你的字符串有前有三个特殊字符(+BOM) <?php $str = '00107042012'; $str1 = '0010...
评论:0条
评论加载中...
发表评论