好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>CMS系统>Dedecms
<tfoot draggable='sEl'></tfoot>

php正则使用例子 php 正则匹配

很多站长朋友们都不太清楚php正则使用例子,今天小编就来给大家整理php正则使用例子,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 一条关于PHP正则表达式的例子 2、 PHP函数preg_match_all正则表达式的基本使用详细解析 3、 PHP正则表达式的使用技巧 4、 php 16.什么是正则表达式,并举一个例子。 一条关于PHP正则表达式的例子

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]

* 匹配前面的子表达式零次或多次

. 匹配除 "\n" 之外的任何单个字符

? 匹配前面的子表达式零次或一次

然后得到的解释合起来就可以

PHP函数preg_match_all正则表达式的基本使用详细解析

了解正则表达式之前,须要掌握一些常用的正则表达式的基础知识,这些如果能记得最好记得,记不住须要用的时候能查到就行,就多个特殊字符,所以说正则表达式玩的就是特殊,具体大家可以查看更加细致的说明。

preg_match_all函数具体说明大家可以查看PHP手册,本文运用

preg_match_all用于测试正则表达的效果。

实例代码:

复制代码

代码如下:

$html

=

'<div

id="biuuu">jb51.net</div><div

id="biuuu_2">jb51.net2</div><div

id="biuuu_3">jb51.net3</div>';

实例要求:分别将每一个DIV元素的ID和内容取出,如biuuu,biuuu_2,biuuu_3,jb51.net,jb51.net2和jb51.net3(一些常用的抓站要领就是这样匹配的)

分析:字符串是一个基本的HTML元素,每一个DIV元素对应该一个ID和内容,并且是独立的,首先考虑如何

取出一个DIV内的ID值和内容,如:jb51.net,然后匹配其它类似的元素。一个DIV中须要取出两个值,也就是两个匹配的表达式,第一个表达式用于匹配ID值(biuuu),第二个表达式用于匹配ID的内容(jb51.net),正则表达式常用的表达式运用小括号,那么前面的元素将会变成如下形式:

<div

id="(biuuu)">(jb51.net)</div>

<div

id="(表达式1)">(表达式2)</div>

好,运用如上小括号把须要匹配的区域执行

了划分,接下来就是如何

匹配各个表达式内的内容,我们猜想一个ID可能是字母,数字或下划线,那这就变得基本了,运用中括号就可以实现,如下:

表达式1:[a-zA-Z0-9_]+

(表示匹配大小写字母,数字和下划线)

那如何

匹配表达式2,因为ID的内容可以是任意的字符,但是要留心,不能匹配<或>字符,因为如果匹配这两个字符将会把后面运用的DIV都匹配出来,因此须要排除这两个字符开始的元素,也就是不匹配以<或>字符,如下:

表达式2:[^<>]+

(表示不匹配<和>字符)

这样,须要匹配的子表达式就实现了,但是还要须要匹配一个

的表达式,要领如下:

表达式:/

'\"(表达式1)\"'>(表达式2)<\/div>/

留心其中的双引号"和/须要运用

\转义字符转义,然后把前面两个表达式放进去,

如下:

'\"([a-z0-9_]+)\"'>/<div

id=\"([a-z0-9_]+)\">([^<>]+)<\/div>/

这样就实现一个匹配每一个DIV元素ID值和内容的正则表达式,然后运用

preg_match_all函数测试如下:

复制代码

代码如下:

$html

=

'<div

id="biuuu">jb51.net</div><div

id="biuuu_2">jb51.net2</div><div

id="biuuu_3">jb51.net3</div>';

preg_match_all('/<div\sid=\"([a-z0-9_]+)\">([^<>]+)<\/div>/',$html,$result);

var_dump($result);

结果:

复制代码

代码如下:

array(3)

{

[0]=>

array(3)

{

[0]=>

string(30)

"<div

id="biuuu">jb51.net</div>"

[1]=>

string(33)

"<div

id="biuuu_2">jb51.net2</div>"

[2]=>

string(33)

"<div

id="biuuu_3">jb51.net3</div>"

}

[1]=>

array(3)

{

[0]=>

string(5)

"biuuu"

[1]=>

string(7)

"biuuu_2"

[2]=>

string(7)

"biuuu_3"

}

[2]=>

array(3)

{

[0]=>

string(8)

"jb51.net"

[1]=>

string(9)

"jb51.net2"

[2]=>

string(9)

"jb51.net3"

}

}

共有三个表达式,分别显示每一个表达式匹配的值,并以数组的形式存储,这样就把每一个DIV元素的ID和内容取出。运用正则表达式最主要还是要知道须要什么,然后跟椐须要执行

匹配,并且思路清晰,并适当的借助preg_match_all函数执行

输出调试,非常方便。

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     匹配一个英文字母 数字或下划线 等价于[ a zA Z_]

/W     匹配除英文字母 数字和下划线以外任何一个字符 等价于[^ a zA Z_]

/s     匹配一个空白字符 等价于[/f/t/v]

/S     匹配除空白字符以外任何一个字符 等价于[^/f/t/v]

/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{ } ([/W])/d{ }// /d{ }$匹配 / / 等字符串 但上述正则表达式不匹配 / 的格式 这是因为模式 [/W] 的结果 / 已经被存储 下个位置 / 引用时 其匹配模式也是字符 /

当不需要存储匹配结果时使用非存储模式单元 (? )

例如/(?: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/21027

php 16.什么是正则表达式,并举一个例子。

一、什么是正则表达式

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

二、例子:

<?php

$str = '我的电话号码是:12345678';

$pt = '/\d+/';

preg_match_all($pt, $str, $arr);

echo '电话号码:' . $arr[0][0];

关于php正则使用例子的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php正则使用例子 php 正则匹配的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did165489
更新时间:2023-02-17   阅读:45次

上一篇: 关于html可以使用php的信息

下一篇:php合同自动生成 php电子合同

相关资讯

最新资料更新

  • 1.dedecms v5.7提示php.ini register_globals must is Off
  • 2.dedecms5.7 ask模块现404的解决方法
  • 3.DedeCMS系统301重定向配置方法详解
  • 4.还原dedecms数据后系统基本参数空白的解决方法
  • 5.dedecms list增加noflag属性的方法 实现让列表标签不调用有推荐属性的文章
  • 6.dede5.7解决senddate比pubdate时间晚的问题
  • 7.织梦DedeCMS栏目列表页URL链接SEO优化的方法
  • 8.让dede:type调用栏目内容content的方法
  • 9.dedecms任意页面调用栏目内容标签{dede:field.content/}的方法
  • 10.dedecms内容模型自定义字段在{dede:arclist}中调用不显示的解决方法
  • 11.DedeCMS arclist标签中实现表格及列表中两列排列
  • 12.解析DedeCms中data目录下的sessions是什么文件
  • 13.织梦(dedecms)网站地图改变生成目录的方法
  • 14.织梦dedecms两种内容模型的文档进行合并的方法
  • 15.dedecms搜索页面不能使用arclist等标签的解决方法
  • 16.dedecms列表推荐文章默认为加粗的修改方法
  • 17.DEDECMS JSON数据生成 DEDECMS JSON接口制作
  • 18.dedeCms批量修改文章发布时间的方法
  • 19.织梦登陆后台卡死无法进入的解决方法
  • 20.dedecms文章内页获取缩略图的调用标签

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]