-
PHP preg_match正则表达式的使用
在php中preg_match()函数是用来执行正则表达式的一个常用的函数,下面我来给大家详细介绍preg_match使用方法.
函数用法:int preg_match_all ( string pattern, string subject, array matches [, int flags] )
例1,代码如下:
- <?php
- preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_SET_ORDER);
- print $out[0][0].", ".$out[0][1]."n";
- print $out[1][0].", ".$out[1][1]."n";
- ?>
- //本例将输出:
- <b>example: </b>, example:
- <div align=left>this is a test</div>, this is a test
例2,URL 中取出域名,代码如下:
- <?php
- // 从 URL 中取得主机名
- preg_match("/^(http://)?([^/]+)/i", "http://www.phpfensi.com/index.html", $matches);
- $host = $matches[2];
- // 从主机名中取得后面两段
- preg_match("/[^./]+.[^./]+$/", $host, $matches);
- echo "domain name is: {$matches[0]}n";
- ?>
- //本例将输出:
- 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');,这样就比较稳妥妥嘎.
出处:http://www.phpfensi.com/php/20140914/5568.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式