PHP preg_match正则表达式的使用

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

函数用法

int preg_match_all ( string pattern, string subject, array matches [, int flags] )

例1

 代码如下 复制代码

preg_match_all ("|<[^>]+>(.*)]+>|U","example:

this is a test ",$out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."n";
print $out[1][0].", ".$out[1][1]."n";
?>

本例将输出:
example: , example:

this is a test , this is a test

例2

URL 中取出域名

 代码如下 复制代码

// 从 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-08-30 08:50:51

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

php正则表达式以及正则函数详解

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

学习小笔记---正则表达式

定义:有一定格式的字符串 作用:1.用来判断一个字符串是否符合一定的要求 2.可以去一个字符串中,把某些符合规则的字符串拿出来 格式: 由 字符簇 限定符 定位符组成 字符簇:一组字符 由字符组成的集合 [0-9]数字 [^0-9]非数字 [a-z]小写英文 [A-Z]大写英文 [a-Z]大小写英文 [a-zA-Z] [a-zA-Z0-9]大小写英文数字 \d数字 \w数字英文字母及下划线 \D 非数字 \W 非数字英文字母及下划线 . 代表所有(任意)字符,除了换行 说明:在字符簇中出现特殊字

第五十一天上课 正则表达式和数组

正则表达式的常用方法: #preg_replace(正则表达式,“x”,$str)           将字符串中满足正则表达式的替换成x #preg_spilt ( 正则表达式,$str )                  将字符串按满足正则表达式的地方分隔开来,返回数组 #preg_match ( 正则表达式,$str,数组 )        将字符串str中满足正则表达式的第一个提取出来存入数组 #preg_match_all(正则表达式,$str,数组)       将字符串str中满

正则表达式匹配题

正则表达式匹配题 靶场地址:http://**.**.***.**:8010/re/?id=1. <?php $key='flag{********************************}'; $Regular=preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match); if( $Regular ){ die('key: '.$key); } 代码解释: p

几个常用的正则函数

1 <?php 2 //preg_match("正则表达式","字符串")用于在字符串中查找匹配项 3 $email = "[email protected]";//简单的邮箱验证,自己不妨试做QQ账号验证,电话号码验证 4 if (preg_match("/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([.a-zA-Z0-9_-])+([.a-zA-Z0-9_-]+)+([.a-zA-Z0-9_-])$/&

PHP获取操作系统、IP、地理位置、浏览器、ISP等信息_PHP类代码

PHP语言.浏览器.操作系统.IP.地理位置.ISP,本PHP类里面有以下几种方法,同时也是用法说明: <?php class class_guest_info{ function GetLang() { $Lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4); //使用substr()截取字符串,从 0 位开始,截取4个字符 if (preg_match('/zh-c/i',$Lang)) { //preg_match()正则表达式匹配函数

php 编程笔记分享

php获取POST数据的三种方法php 图片加水印源代码php+ajax+json的一个最简单实例php 汉字转拼音源码php遍历目录,生成目录下每个文件的md5值并写入到结果文件中php实现linux命令tail -fphp json_encode与json_decode使用实例php curl 模拟登录并获取数据php fprintf 将格式化后的字符串写入到流php explode 将字符串分割为数组php crc32 计算字符串的 32 位 CRC(循环冗余校验)php count_ch

php使用preg_match_all匹配文章中的图片

有时候我们需要使用php获取网页中的图片并保存下来,这里我们可以使用preg_match_all用来匹配图片地址,需要的码农可以参考下 preg_match_all 函数: int preg_match_all ( string pattern, string subject, array matches [, int flags] )执行一个全局正则表达式匹配在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中.

沈逸老师PHP魔鬼特训笔记(10)

为了防止代码让我们混淆不清,大家看视频中的分离方法 1.新建了一个文件夹叫code (这代表是代码) 2.再新建一个文件夹叫page (这代表是页面) 代码该怎么写呢? 这里要记住口诀 1.index.php 永远是 “大内总管”.永远由它来加载code和page 2.code里面的文件永远只能写PHP代码 3.page里面的文件,原则上以写html为主,但是可以嵌入部分PHP代码. 具体请看视频操作. 为了某些原因,我们规定,凡是写变量的文件必须以var.php为文件后缀 譬如code1.va