php基础入门四(正则表达式)

php基础入门四

一、正则表达式

1>正则表达式的基本语法:

正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)

/foo bar/

#[0-9]$#

~php~

如果模式中包含分隔符,则分隔符需要使用反斜杠(\)进行转义。

$pattern = "/http:\/\//";

2>元字符和转义符

元字符含义元字符含义
\一般用于转义字符.匹配除了换行符外的任意字符
^行首$行尾
[开始字符类定义]结束字符类定义
开始一个可选分支子组的开始标志
子组的结束标志{自定义量词开始标记
}自定义量词结束标记-标记字符范围

量词元字符:

元字符含义元字符含义
表示[0,1]次匹配*[0,n]次匹配
+表示[1,n]次匹配

3>贪婪模式和惰性模式

贪婪模式:在可匹配与可不匹配的时候,优先匹配

当使用+之后将会变的贪婪,它将匹配尽可能多的字符,但使用问号?字符时,它将尽可能少的匹配字符,既是懒惰模式。

$p = '/\d+\-\d+/';
$str = "我的电话是010-12345678";
preg_match($p, $str, $match);
echo $match[0]; //结果为:010-12345678

懒惰模式:在可匹配与可不匹配的时候,优先不匹配

$p = '/\d?\-\d?/';
$str = "我的电话是010-12345678";
preg_match($p, $str, $match);
echo $match[0];  //结果为:0-1

4>字符串是否存在

preg_match()

 意义:用来判断一类字符模式是否存在。

 语法:preg_match( p a t t e r n , pattern, pattern,str)

 返回值:返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索。

$p = '/love/';
$str = "I love you too";
if (preg_match($p, $str)) {
    echo 'matched';
}

preg_match_all()

 意义:搜索字符串中所有给定正则表达式的匹配结果并且将它们以指定顺序输出到matches中。在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.

语法:preg_match_all ( p a t t e r n , pattern, pattern,str, m a t c h s , matchs, matchs,flags)

$p = "/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";
$str = "<table> <tr><td>Eric</td><td>25</td></tr> <tr><td>John</td><td>26</td></tr> </table>";
preg_match_all($p, $str, $matches);
print_r($matches);
//Array ( [0] => Array ( [0] => Eric25 [1] => John26 ) [1] => Array ( [0] => Eric [1] => John ) [2] => Array ( [0] => 25 [1] => 26 ) )
preg_match_all('/(foo)(bar)(baz)/', 'foobarbaz', $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

m a t c h e s 结 果 排 序 为 matches结果排序为 matchesmatches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,

5>正则表达式的搜索和替换

preg_replace()

 意义:搜索字符串中的特定字符或者替换指定的字符

 语法:preg_replace($pattern, $replacement, $string)

 返回值:如果string是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串,如果发生错误,返回 NULL 。

$string = 'February 17, 2018';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '$3, ${1} $2';
echo preg_replace($pattern, $replacement, $string); //2018, February 17

其中${1}与$1的写法是等效的,表示第一个匹配的字串,$2代表第二个匹配的。

用正则表达式去除多余的空格或字符

$str = 'one     two';
$str = preg_replace('/\s+/', ',', $str);
echo $str; // 结果改变为'one,two'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值