用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

PHP preg_match正则表达式的使用

时间:2015-01-23  来源:西部数据  作者:西部数据

在php中preg_match()函数是用来执行正则表达式的一个常用的函数,下面我来给大家详细介绍preg_match使用方法.

函数用法:int preg_match_all ( string pattern, string subject, array matches [, int flags] )

例1,代码如下:

  1. <?php 
  2. preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_SET_ORDER); 
  3. print $out[0][0].", ".$out[0][1]."n"
  4. print $out[1][0].", ".$out[1][1]."n"
  5. ?> 
  6. //本例将输出:  
  7. <b>example: </b>, example: 
  8. <div align=left>this is a test</div>, this is a test 

例2,URL 中取出域名,代码如下:

  1. <?php 
  2. // 从 URL 中取得主机名 
  3. preg_match("/^(http://)?([^/]+)/i""http://www.phpfensi.com/index.html"$matches); 
  4. $host = $matches[2]; 
  5. // 从主机名中取得后面两段 
  6. preg_match("/[^./]+.[^./]+$/"$host$matches); 
  7. echo "domain name is: {$matches[0]}n"
  8. ?>  
  9. //本例将输出: 
  10. domain name is: phpfensi.com 

preg_match字符串长度问题

preg_match正则提取目标内容,死活有问题,代码测得死去活来.

后来怀疑PHP 的preg_match有字符串长度限制,果然,发现“pcre.backtrack_limit ”的值默认只设了100000.

解决办法,代码如下:

ini_set('pcre.backtrack_limit',999999999);

注:这个参数在php 5.2.0版本之后可用.

另外说说关于:pcre.recursion_limit

pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃.

也可以通过修改配置来限制,代码如下:

ini_set('pcre.recursion_limit', 99999);

实际项目应用中,最好也对内存进行限定设置:ini_set('memory_limit','64M');,这样就比较稳妥妥嘎.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门