知识大全 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 netpreg_match_all() preg_match_all() 函数用于进行正则表达式全局匹配 成功返回整个模式匹配的次数(可能为零) 如果出错返回 FALSE 语法 int preg_match_all( string pattern string subject array matches [ int flags ] ) 参数说明
参数 说明 pattern 正则表达式 subject 需要匹配检索的对象 matches 存储匹配结果的数组 flags可选 指定匹配结果放入 matches 中的顺序 可供选择的标记有
- PREG_PATTERN_ORDER 默认 对结果排序使 $matches[ ] 为全部模式匹配的数组 $matches[ ] 为第一个括号中的子模式所匹配的字符串组成的数组 以此类推
- PREG_SET_ORDER 对结果排序使 $matches[ ] 为第一组匹配项的数组 $matches[ ] 为第二组匹配项的数组 以此类推
- 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相关参考
代码如下 functionfuncMtel($str)//手机号码正则表达试 return(preg_match("/(?:d|[])d$/"$str))?true:false; 测
判断一个字符串是否含有超级链接 代码如下 $str="ssdsf<atarget=_blank>sdf</a>sdfss";if(preg_matc
判断Email: 代码如下 <?phpfunctionis_email($email)returnstrlen($email)>&&preg_match("
PHP学习的经验和技巧(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 二使用PHP本身的对
PHP学习的经验和技巧(四) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 四PHP和文件系统的
PHP学习的经验和技巧(七) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 七基于PHP的用户认
PHP学习的经验和技巧(五) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 五丰富的数组函数
PHP学习的经验和技巧(六) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 六动态图像的创建
PHP学习的经验和技巧(三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 三文件是我们的朋友
PHP学习的经验和技巧(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 全球超过万个互联网网