PHP 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.***.net/index.html", $matches);
$host = $matches[2];
// 从主机名中取得后面两段
preg_match("/[^./]+.[^./]+$/", $host, $matches);
echo "domain name is: {$matches[0]}n";
?> 

本例将输出:

domain name is: PPP.NET

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'); , 这样就比较稳妥妥嘎。

时间: 2024-10-25 09:42:01

PHP preg_match正则表达式的使用的相关文章

非常重要的php正则表达式详解_php技巧

 正则表达式是php中一个非常重要的知识点,通常用来查找和替换字符串,最常用的就是验证用户输入的信息格式是否正确,如邮件格式.电话格式等等.还有比如采集器之类的软件中,正则也是必用不可!   现在开始来学习正则表达式的基本语法:1."/"是定界符,"/"定界符之间的部分就是将要在目标对象中进行匹配的模式.同时为了正则更加灵活,引入了元字符,即"+", "*",以及 "?". (1)"+"

PHP常用正则表达式函数学习笔记

正则语法规则     我们先介绍三个东西,然后可以进行简单的例子了. 一.定界符    "/" 左斜线 php采用左斜线作为定界符,规定规则的边界,成对出现,两个定界符之间的内容就是需要被匹配的规则 二.元字符---出现模式类 匹配方式,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式. 比如出现一次,出现多于一次,出现多次,没有出现.等等. 常用的有:     +     1次或多次     *     0次或1次或多次     ?    0次或1次   {2,

php获取浏览器信息、访客语言、访客操作系统、访客IP地址及访客地理位置

php获取浏览器信息.获取访客语言.获取访客操作系统.获取访客IP地址.获取访客地理位置. php获取浏览器信息,获取访客语言:简体中文.繁體中文.English.获取访客操作系统:Windows.MAC.Linux.Unix.BSD.Other.获取访客IP地址.获取访客地理位置,使用 新浪腾讯接口. <?php /** * 获取访客信息的类:语言.浏览器.操作系统.IP.地理位置.ISP. * 使用: * $obj = new guest_info; * $obj->GetLang();

php取得客户端信息类

Java代码   <?php      /**     * 获取访客信息的类:语言.浏览器.操作系统.IP.地理位置.ISP.     * 日期:2011-09-13     * 作者:www.itwhy.org     * 使用:          $obj = new class_guest_info;          $obj->GetLang();        //获取访客语言:简体中文.繁體中文.English.          $obj->GetBrowser();  

PHP获取浏览器信息类和客户端地理位置的2个方法_php实例

一.获取浏览器信息,获取访客操作系统:windows.mac.linux.unix.bsd.other,以及访客ip地址等信息的PHP类 复制代码 代码如下: <?php  /**  * 获取访客信息的类:语言.浏览器.操作系统.ip.地理位置.isp.  * 使用:  *   $obj = new guest_info;  *   $obj->getlang();     //获取访客语言:简体中文.繁體中文.english.  *   $obj->getbrowser();  //获

正则表达式处理函数 preg_match,preg_match_all

第八章(4)正则表达式处理函数(一) e :可以把替换出来的结果当成php函数执行. preg_replace(1.正则模式 2.替换成的字符串 3.要被替换的字符串在哪里面 4.替换的次数) 执行正则表达式的搜索和替换. preg_split(1.正则模式 2.要被分割的字符串名称) 执行表达式的分割. preg_match(1.正则模式 2.要被匹配的字符串组 3.匹配后已知次数及内容的数组名称) 进行正则表达式匹配. preg_match_all(1.正则模式 2.要被匹配的字符串组 3.

POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)_php技巧

首先来看看 POSIX 风格正则表达式的两个主要函数: ereg 函数:(正则表达式匹配) 格式:int ereg ( string pattern, string string [, array &regs] ) 注意:使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案.(一般的话还是使用 preg_match() ,比较好勒~~) 以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern 所匹配的子串.如果找到与 p

php正则表达式之preg_match()用法

 代码如下 复制代码 <?php // 模式定界符后面的 "i" 表示不区分大小写字母的搜索 if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) { print "A match was found."; } else { print "A match was not found."; } ?> 取

php preg_match 支持换行正则表达式

php教程 preg_match 支持换行正则表达式 如果是根据内容自己,然后自己写的模式,为什么要写这么怪的模式呢.即使原来内容有换行,你模式也可以不使用换行啊.如果模式是存在数据库教程的 /<span class="realm tip" id="profile-info-realm" data-battlegroup="(.*)">      (.*)</span>/i 参考代码二 preg_match('/<s