首页 > 互联资讯 > 建站教程  > 

php中字符串与正则表达式,php正则表达式语法

本文目录一览:

PHP 字符串替换 正则表达式 preg_match_all 方法

?php

$a = "floor(ceil(TC003*TC003)*price3+floor(20*(TC123+TC101))+(TC213+TC033)*tTC001000+pprice222+tc1)";

$out = preg_replace('/(?:TCd{3}|priced{1})(?!d)/i','1',$a);

echo 'pre';

print_r($out);

//结果

//floor(ceil(1*1)*1+floor(20*(1+1))+(1+1)*tTC001000+pprice222+tc1)

PHP中的正则表达式是什么意思?

是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);

2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

正则表达式的特点是:

1. 灵活性、逻辑性和功能性非常的强;

2. 可以迅速地用极简单的方式达到字符串的复杂控制。

3. 对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

php中正则表达式匹配字符串并输出

用explode更方便,例如:

$str=".....t分割的字符串";

list($t,$r)=explode("t", $str);

echo $r;

上面的$t是用来占位的,代码执行后$r就是我们需要的第二个字段值

php 怎样判断一个字符串为正则表达式

正则表达式有定界符,除了字母、数字和反斜线()之外的任何字符都可以作为定界符号

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正则表达式基本函数

在PHP正则表达式中需要转义的字符如下

$^*()+={}[]|/: ? "

注意 perl风格中表达式要求以/开始和结尾 如 /food/ 表匹配字符 food

perl修饰符如下

i 完成不区分大小写的搜索

g 查找所有出现(all occurrences 完成全局搜索)

m 将一个字符串视为多行(m就表示多(multiple)) 默认情况下 ^和$字符匹配字符串中的最开始和最末尾 使用m修饰符将使^和$匹配字符串中每行的开始

s 将一个字符串视为一行 忽略其中的所有换行符;它与m修饰符正好相反

x 忽略php正则表达式中的空白和注释

U 第一次匹配后停止 默认情况下 将找到最后一个匹配字符结果 利用这个修饰符可以在第一次匹配后停止 进而形式循环匹配

元字符说明

利用Perl正则表达式还可以做另一件有用的事情 这就是使用各种元字符来搜索匹配 元字符(metacharacter)就是一个前面有反斜线的字母字符 表示某种特殊含义 以下是一些有用的元字符

A 只匹配字符串开头

b 匹配单词边界

B 匹配单词边界之外的任意字符

d 匹配数字字符 它与[ ]相同

D 匹配非数字字符的php正则

s 匹配空白字符

S 匹配非空白字符的php正则

[] 包围一个字符类 字符类包括 [ ] [a z] [a zA Z] 等类似

() 包围一个字符分组或定义一个反引用

$ 匹配行尾

^ 匹配行首

* 匹配前面的子表达式零次或多次 要匹配 * 字符 请使用 *

+ 匹配前面的子表达式一次或多次 要匹配 + 字符 请使用 +

? 匹配前面的子表达式零次或一次 或指明一个非贪婪限定符 ?

匹配除换行之外的任何字符

引出下一个元字符

w 匹配任何只包含下划线和字母数字字符的字符串 它与 [a zA Z _]相同

W 匹配没有下划线和字母数字字符的字符串的php正则

Perl风格函数有

array preg_grep(string pattern array input [ flags])

搜索数组中所有元素 返回由与某个模式匹配的所有元素组成的数组

PHP 增加了一个可选参数 flag 它接受一个值 PREG_GREP_INVERT 传递此标志将得到与该模式不匹配的数据元素

int preg_match(string pattern string string [ array matches [ int flags [ int offset]]])

在字符串中搜索模式 如果存在返回TRUE 否则返回FALSE

可选输入参数matches可以包含搜索模式中包含的子模式的各个部分 默认返回 匹配的字符串 当有()子包围时 会在数组后面输出

int preg_match_all(string pattern string string array pattern_array [ int order])

和函数 preg_match一样 不过 preg_match 只搜索一次 而 preg_match_all 会执行循环搜索 返回所有匹配的结果

mixed preg_replace(mixed pattern mixed replacement mixed str [ int limit])

用replacement替换pattern的所有出现 并返回修改后的结果

可选 limit 指定应当发生多少次匹配 不设置limit或设置为 将替换所有出现的情况

lishixinzhi/Article/program/PHP/201311/21050


php中字符串与正则表达式,php正则表达式语法由讯客互联建站教程栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“php中字符串与正则表达式,php正则表达式语法