知识大全 php小经验:解析preg

Posted 函数

篇首语:书史足自悦,安用勤与劬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 php小经验:解析preg相关的知识,希望对你有一定的参考价值。

  正则表达式在 PHP 中的应用 在 PHP 应用中 正则表达式主要用于 •正则匹配 根据正则表达式匹配相应的内容 •正则替换 根据正则表达式匹配内容并替换 •正则分割 根据正则表达式分割字符串 在 PHP 中有两类正则表达式函数 一类是 Perl 兼容正则表达式函数 一类是 POSIX 扩展正则表达式函数 二者差别不大 而且推荐使用Perl 兼容正则表达式函数 因此下文都是以 Perl 兼容正则表达式函数为例子说明 定界符 Perl 兼容模式的正则表达式函数 其正则表达式需要写在定界符中 任何不是字母 数字或反斜线()的字符都可以作为定界符 通常我们使用 / 作为定界符 具体使用见下面的例子 提示 尽管正则表达式功能非常强大 但如果用普通字符串处理函数能完成的 就尽量不要用正则表达式函数 因为正则表达式效率会低得多 关于普通字符串处理函数 preg_match() preg_match() 函数用于进行正则表达式匹配 成功返回 否则返回 语法 int preg_match( string pattern string subject [ array matches ] ) 参数说明

参数 说明 pattern 正则表达式 subject 需要匹配检索的对象 matches 可选 存储匹配结果的数组 $matches[ ] 将包含与整个模式匹配的文本 $matches[ ] 将包含与第一个捕获的括号中的子模式所匹配的文本 以此类推

  例子

复制代码 代码如下: <?php if(preg_match("/php/i" "PHP is the web scripting language of choice " $matches)) print "A match was found:" $matches[ ]; else print "A match was not found "; ?>

   浏览器输出

复制代码 代码如下: A match was found: PHP

   在该例子中 由于使用了 i 修正符 因此会不区分大小写去文本中匹配 php 提示 preg_match() 第一次匹配成功后就会停止匹配 如果要实现全部结果的匹配 即搜索到subject结尾处 则需使用 preg_match_all() 函数 例子 从一个 URL 中取得主机域名

复制代码 代码如下: <?php // 从 URL 中取得主机名 preg_match("/^(//)?([^/]+)/i" "" $matches); $host = $matches[ ]; // 从主机名中取得后面两段 preg_match("/[^ /]+ [^ /]+$/" $host $matches); echo "域名为 $matches[ ]"; ?>

   浏览器输出

复制代码 代码如下: 域名为 jb net

   preg_match_all() preg_match_all() 函数用于进行正则表达式全局匹配 成功返回整个模式匹配的次数(可能为零) 如果出错返回 FALSE 语法 int preg_match_all( string pattern string subject array matches [ int flags ] ) 参数说明

参数 说明 pattern 正则表达式 subject 需要匹配检索的对象 matches 存储匹配结果的数组 flags

  可选 指定匹配结果放入 matches 中的顺序 可供选择的标记有

  1. PREG_PATTERN_ORDER 默认 对结果排序使 $matches[ ] 为全部模式匹配的数组 $matches[ ] 为第一个括号中的子模式所匹配的字符串组成的数组 以此类推
  2. PREG_SET_ORDER 对结果排序使 $matches[ ] 为第一组匹配项的数组 $matches[ ] 为第二组匹配项的数组 以此类推
  3. PREG_OFFSET_CAPTURE 如果设定本标记 对每个出现的匹配结果也同时返回其附属的字符串偏移量

  下面的例子演示了将文本中所有 <pre></pre> 标签内的关键字(php)显示为红色

复制代码 代码如下: <?php $str = "<pre>学习php是一件快乐的事 </pre><pre>所有的phper需要共同努力!</pre>"; $kw = "php"; preg_match_all( /<pre>([sS]*?)</pre>/ $str $mat); for($i= ;$i<count($mat[ ]);$i++) $mat[ ][$i] = $mat[ ][$i]; $mat[ ][$i] = str_replace($kw <span > $kw </span> $mat[ ][$i]); $str = str_replace($mat[ ][$i] $mat[ ][$i] $str); echo $str; ?>

   正则匹配中文汉字 正则匹配中文汉字根据页面编码不同而略有区别 •GBK/GB 编码 [x xff>]+ 或 [xa xff]+ •UTF 编码 [x e x fa ]+/u 例子

复制代码 代码如下: <?php $str = "学习php是一件快乐的事 "; preg_match_all("/[x xff]+/" $str $match); //UTF 使用 //preg_match_all("/[x e x fa ]+/u" $str $match); print_r($match); ?>

   输出

复制代码 代码如下: cha138/Article/program/PHP/201311/21230

相关参考

知识大全 php 手机号码正则表达试程序代码

  代码如下  functionfuncMtel($str)//手机号码正则表达试    return(preg_match("/(?:d|[])d$/"$str))?true:false;    测

知识大全 php匹配字符中链接地址程序代码

  判断一个字符串是否含有超级链接 代码如下   $str="ssdsf<atarget=_blank>sdf</a>sdfss";if(preg_matc

知识大全 php 邮箱,网址,手机号码合法性正则

  判断Email:  代码如下 <?phpfunctionis_email($email)returnstrlen($email)>&&preg_match("

知识大全 PHP学习的经验和技巧(二)

PHP学习的经验和技巧(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  二使用PHP本身的对

知识大全 PHP学习的经验和技巧(四)

PHP学习的经验和技巧(四)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  四PHP和文件系统的

知识大全 PHP学习的经验和技巧(七)

PHP学习的经验和技巧(七)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  七基于PHP的用户认

知识大全 PHP学习的经验和技巧(五)

PHP学习的经验和技巧(五)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  五丰富的数组函数  

知识大全 PHP学习的经验和技巧(六)

PHP学习的经验和技巧(六)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  六动态图像的创建  

知识大全 PHP学习的经验和技巧(三)

PHP学习的经验和技巧(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  三文件是我们的朋友 

知识大全 PHP学习的经验和技巧(一)

PHP学习的经验和技巧(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  全球超过万个互联网网