php中文正则匹配?PHP中如何过滤掉非汉字字符

本文目录
- php中文正则匹配
- PHP中如何过滤掉非汉字字符
- php 过滤手机号及类似手机号
- 手机号和身份证号的正则表达式怎么写
- 手机号码正则表达式验证
- php判断微信昵称是否有特殊字符
- php 正则表达式 url匹配
- php 正则 去掉所有标调符号,数字 和字母,只留空格分隔的中文
- PHP正则表达式的使用技巧
- php正则如何替换所有符合条件的字符串
php中文正则匹配
php中utf-8编码下用正则表达式匹配汉字的最终正确表达式——/^+$/u,
GBK: preg_match("/^+$/",$str); //GB2312汉字字母数字下划线正则表达式。
器查询或者 js匹配中文
匹配中文字符的正则表达式:
或许你也需要匹配双字节字符,中文也是双字节的字符
匹配双字节字符(包括汉字在内):
PHP中如何过滤掉非汉字字符
首先需要先把带有中文的字符串进行编码转化,由GB2312编码转化为UTF-8编码。
这样是为了PHP正则表达式可以正确的去匹配
然后通过preg_match_all()函数以及相应的中文匹配正则表达式,把所有的中文匹配出来
最后,把匹配到的中文字符串再转为B2312编码,这样做是为了可以在网页编码为GB2312上正确显示。
例如:
《?php
$str = "ddddvvv(,中文.)dfdsfds字符啊.";
//把GB2312编码转化为 UTF-8编码
$str = mb_convert_encoding($str, ’UTF-8’, ’GB2312’);
//正则匹配
preg_match_all(’/+/u’, $str, $matches);
//把匹配到的数组连接为字符串
$str = implode(’’, $matches);
//把UTF-8编码转化为 GB2312编码
$str = mb_convert_encoding($str, ’GB2312’, ’UTF-8’);
echo $str;
//输出 中文字符啊
?》
php 过滤手机号及类似手机号
帮你找了以下:
$phonenumber = ’13712345678’;
if(preg_match("/^1{1}\d{9}$/",$phonenumber)){
echo "是手机号码";
}else{
echo "不是手机号码";
这段代码可以检车你要查询的变量是不是一个手机号码。
/^1{1}\d{9}$/这个正则表达式,表示必须1开头,第二位数是3|4|5||7|8,如果那天出了16*开头的号码,你可以在后面再加一个6就可以了。
手机号和身份证号的正则表达式怎么写
身份证号(18位,最后一位为数字或字母x(大小写都允许),没有对出生日期的年月日做限制):
/^\d{17}$/
手机号(11位,第一位为1,第二位可能为3、5、7、8、9):
/^1\d{9}$/
如果不限制手机号第二位数字的话就是:/1\d{10}/
手机号码正则表达式验证
正则表达式(regular expression)是一个描述字符模式的对象。使用JavaScript正则表达式可以进行强大的模式匹配和文本检索与替换功能。 手机号码正则表达式验证。
-----------------------------------------------------------------------------------------------------------------------
function checkPhone(){
var phone = document.getElementById(’phone’).value;
if(!(/^1d{9}$/.test(phone))){
alert("手机号码有误,请重填");
return false;
}
}
-----------------------------------------------------------------------------------------------------------------------
或者
-----------------------------------------------------------------------------------------------------------------------
function checkPhone(){
var phone = document.getElementById(’phone’).value;
if(!(/^1(3|4|5|6|7|8|9)d{9}$/.test(phone))){
alert("手机号码有误,请重填");
return false;
}
}
-----------------------------------------------------------------------------------------------------------------------
php判断微信昵称是否有特殊字符
您好,可以使用php的正则表达式来查找特殊字符,php提供了一个preg_match()方法,可以使用该方法来进行匹配,具体使用事项可以百度查找一下。
php 正则表达式 url匹配
1,preg_grep(pattern,array);它的返回值是一个新数组,新数组的元素是成功匹配的元素。
2,preg_match(mode,string);它的返回值是一个整数,0或1,0表示匹配不成功,1表示匹配成功,preg_match()将在第一个匹配成功后停止搜索,不再继续匹配。
3,preg_match_all(模式,字符串,保存匹配结果数组(multidimensional array));在搜索字符串中,所有匹配的模式都提供正则表达式的匹配结果,并以指定的顺序将它们输出到指定的数组。它执行与字符串末尾匹配的全局正则表达式匹配。
4,preg_quote(string);转义正则表达式字符,preg_quote()需要一个参数字符串,并在每个正则表达式语法中为该字符添加反斜杠。
5,转换效果如图所示。
php 正则 去掉所有标调符号,数字 和字母,只留空格分隔的中文
《?php
$str = "*/123abcd只留sa";
preg_match_all(’/+/u’, $str, $matches);
$str = join(’’, $matches);
echo $str;
?》
输出“只留”
完善一下,以上适用于UTF8编码,如果是GBK的则需要转码,如下。
《?php
$str = "*/123abcd只留sa";
$str = mb_convert_encoding($str, ’UTF-8’, ’GB2312’);
preg_match_all(’/+/u’, $str, $matches);
$str = join(’’, $matches);
echo $str;
?》
PHP正则表达式的使用技巧
PHP正则表达式的定义
用于描述字符排列和匹配模式的一种语法规则 它主要用于字符串的模式分割 匹配 查找及替换操作
PHP中的正则函数
PHP中有两套正则函数 两者功能差不多 分别为
一套是由PCRE(Perl Compatible Regular Expression)库提供的 使用 preg_ 为前缀命名的函数
一套由POSIX(Portable Operating System Interface of Unix )扩展提供的 使用以 ereg_ 为前缀命名的函数 (POSIX的正则函数库 自PHP 以后 就不在推荐使用 从PHP 以后 就将被移除)
由于POSIX正则即将推出历史舞台 并且PCRE和perl的形式差不多 更利于我们在perl和php之间切换 所以这里重点介绍PCRE正则的使用
PCRE正则表达式
PCRE全称为Perl Compatible Regular Expression 意思是Perl兼容正则表达式
在PCRE中 通常将模式表达式(即正则表达式)包含在两个反斜线 / 之间 如 /apple/
正则中重要的几个概念有 元字符 转义 模式单元(重复) 反义 引用和断言 这些概念都可以在文章中轻松的理解和掌握
常用的元字符(Meta character)
元字符 说明
/A 匹配字符串串首的原子
/Z 匹配字符串串尾的原子
/b 匹配单词的边界 //bis/ 匹配头为is的字符串 /is/b/ 匹配尾为is的字符串 //bis/b/ 定界
/B 匹配除单词边界之外的任意字符 //Bis/ 匹配单词 This 中的 is
/d 匹配一个数字 等价于
/D 匹配除数字以外任何一个字符 等价于
/w 匹配一个英文字母 数字或下划线 等价于
/W 匹配除英文字母 数字和下划线以外任何一个字符 等价于
/s 匹配一个空白字符 等价于
/S 匹配除空白字符以外任何一个字符 等价于
/f 匹配一个换页符等价于 /x c 或 /cL
匹配一个换行符 等价于 /x a 或 /cJ
匹配一个回车符等价于/x d 或 /cM
/t 匹配一个制表符 等价于 /x /或/cl
/v 匹配一个垂直制表符 等价于/x b或/ck
/oNN 匹配一个八进制数字
/xNN 匹配一个十六进制数字
/cC 匹配一个控制字符
模式修正符(Pattern Modifiers)
模式修正符在忽略大小写 匹配多行中使用特别多 掌握了这一个修正符 往往能解决我们遇到的很多问题
i -可同时匹配大小写字母
M -将字符串视为多行
S -将字符串视为单行 换行符做普通字符看待 使 匹配任何字符
X -模式中的空白忽略不计
U -匹配到最近的字符串
e -将替换的字符串作为表达使用
格式 /apple/i匹配 apple 或 Apple 等 忽略大小写 /i
PCRE的模式单元
// 提取第一位的属性
/^/d{ } ( 的结果 / 已经被存储 下个位置 / 引用时 其匹配模式也是字符 /
当不需要存储匹配结果时使用非存储模式单元 (? )
例如/(?:a|b|c)(D|E|F)// g/ 将匹配 aEEg 在一些正则表达式中 使用非存储模式单元是必要的 否则 需要改变其后引用的顺序 上例还可以写成/(a|b|c)(C|E|F)/ g/
PCRE正则表达式函数
以下为引用的内容
preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace()
函数的具体使用 我们可以通过PHP手册来找到 下面分享一些平时积累的正则表达式
匹配action属性
以下为引用的内容
$str = ; $match = ; preg_match_all( //s+action=/ (?!)( *?)/ /s/ $str $match); print_r($match);
在正则中使用回调函数
以下为引用的内容
/** * replace some string by callback function * */ function callback_replace() { $url = ; $str = ; $str = preg_replace ( /(?《=/saction=/ )(?!)( *?)(?=/ /s)/e search(/$url // ) $str ); echo $str; } function search($url $match){ return $url / $match; }
带断言的正则匹配
以下为引用的内容
$match = ; $str = xxxxxx cn bold font paragraph text
; preg_match_all ( /(?《=《(/w{ })》) *(?=《/// 》)/ $str $match ); echo 匹配没有属性的HTML标签中的内容 ; print_r ( $match );
替换HTML源码中的地址
以下为引用的内容
$form_ = preg_replace ( /(?《=/saction=/ |/ssrc=/ |/s)(?!|javascript)( *?)(?=/ /s)/e add_url(/$url / // / ) $form_ );
lishixinzhi/Article/program/PHP/201311/21027php正则如何替换所有符合条件的字符串
在php中可以使用“preg_replace”函数替换所有符号匹配条件的元素,其语法是【
preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)】。
推荐:《PHP视频教程》
PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素
需要我们用程序处理的数据并不总是预先以数据库思维设计的,或者说是无法用数据库的结构去存储的。
比如模版引擎解析模版、垃圾敏感信息过滤等等。
一般这种情况,我们用正则按我们的规则去匹配preg_match、替换preg_replace。
但一般的应用中,无非是些数据库CRUD,正则摆弄的机会很少。
根据前面说的,两种场景:统计分析,用匹配;处理用替换。
PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素。
代码如下:
preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)
大部分语言的正则表达式都是差不多的,不过也有细微的差异。
PHP 正则表达式定界符
大多数语言的正则表达式都是由“/”作为定界符的,而在PHP中,还可以使用“#”定界,如果字符串中包含大量“/”字符,在使用“/”定界的时候,就需要对这些“/”转义,而使用“#”就不需要转义,更简洁。
《?php
***隐藏网址***
***隐藏网址***
// . : - 都是正则符号,所以需要转义,而 / 是定界符,如果字符串中包含 / 定界符,就需要转义
***隐藏网址***
// 在 #作为定界符,/ 就不再是定界符的含义,就不需要转义了。
***隐藏网址***
***隐藏网址***
?》PHP 正则中文和忽略大小写PHP preg_replace() 是区分大小写的,同时只能匹配ASCII编码内的字符串,如果需要匹配不区分大小写和中文等字符需要添加相应的修饰符 i 或 u。
《?php
***隐藏网址***
echo preg_replace(’/W3CSchool/’,’w3c’,$weigeti);
***隐藏网址***
echo preg_replace(’/W3CSchool/i’,’w3c’,$weigeti);
***隐藏网址***
echo preg_replace(’/网址/u’,’’,$weigeti);
***隐藏网址***
?》PHP 正则表达式在遇到换行符时,会将换行符当做字符串中间一个普通字符。而通用符号.不能匹配
,所以遇到带有换行符的字符串正则会有很多要点。
《?php
$weigeti="jb51.net
IS
LOVING
YOU";
// 想要把上面$weigeti 替换成jb51.net
echo preg_replace(’/^$/’,’’,$weigeti);
// 这个正则表达式是,匹配只包含w的元素,$weigeti 是以V开头,符合。.无法匹配
// 输出【jb51.net IS LOVEING YOU】
echo preg_replace(’/^$/s’,’’,$weigeti);
// 这个用修饰符s,也就是 . 可以匹配
了,所以整句匹配,输出空
// 输出【】
echo preg_replace(’/^$/m’,’’,$weigeti);
// 这里使用了修饰符,将
作为多行独立匹配。也就等价于:
/*
$preg_m=preg_replace(’/^$/m’,’’,$weigeti);
$p=’/^$/’;
$a=preg_replace($p,’’,’jb51.net’);
$b=preg_replace($p,’’,’IS’);
$c=preg_replace($p,’’,’LOVING’);
$d=preg_replace($p,’’,’YOU’);
$preg_m === $a.$b.$c.$d;
*/
// 输出【jb51.net】
?》正则替换匹配变量向后引用
如果您熟悉Javascript,一定对$1 $2 $3 ?? 等向后引用比较熟悉,而在 PHP 中这些也可以被当作向后引用参数。而在PHP中,还可以使用 1 1 来表示向后引用。
向后引用的概念就是匹配一个大片段,这个正则表达式内部又被用括号切割成若干小匹配元素,那么每个匹配元素就被按照小括号序列用向后引用代替。
《?php
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
/*
栏目:W3CSchool 在线教程
***隐藏网址***
商标:Jbzj!
*/
// 括号中括号,外面括号先计数
***隐藏网址***
/*
***隐藏网址***
栏目:W3CSchool 在线教程
***隐藏网址***
商标:Jbzj!
*/
?》

更多文章:
织梦php版本(织梦后台添加文章时,提示标题不能为空,但是,标题、内容和分类都是填好的,是DedeCMS-V5.7-GBK-SP1版本)
2025年6月21日 23:00
form在信封上是什么意思(在信封上面写From与To分别代表哪个英文是收件人,哪个英文是发件人急!先谢谢!)
2026年9月13日 19:30
readprocessmemory资源消耗(readprocessmemory问题)
2026年8月10日 21:00
essentials插件(minecraft 怎么安装Essentials插件)
2026年3月27日 00:45
s11全球总决赛集锦(edg晋级s11决赛(夺取冠军之路))
2026年8月17日 09:00
keyset(Set keys=Map.keyset()怎么理解)
2025年10月20日 14:00
js注册成功跳转页面代码(如何使用JavaScript实现 按钮跳转页面功能)
2026年7月24日 02:45
securities(有关securities, stock, shares, bonds的概念~)
2025年7月8日 15:45
export trade(export trade是什么意思)
2026年5月26日 10:00
css鼠标悬停背景颜色变化(用css样式怎样实现鼠标放在背景图片上,背景图片的颜色改变)
2026年3月17日 16:30
sql中connect的用法(C#中,用SqlConnection怎么连接数据库)
2026年9月2日 22:45
account短语用法(On no account can是什么意思)
2026年5月2日 17:30












