文档章节

PHP正则表达式中常见函数的简单使用---一

雨醉风尘
 雨醉风尘
发布于 2015/08/19 23:23
字数 746
阅读 129
收藏 4
点赞 0
评论 0
<?php
$pattern='/[0-9]/';                                           //定义匹配的模式
$subject='weuyr3ui76as83s0ck9';                 //定义需匹配的对象
$m1=$m2=array();                                          //初始化两个空数组
$num1=preg_match($pattern, $subject, $m1);         //将匹配的结果赋予空数组$m1
$num2=preg_match_all($pattern, $subject, $m2);   //将匹配的结果赋予空数组$m2
show($m1); 
echo "<hr />";
show($m2);
echo "------------------------------------------<br/>";
echo "函数preg_match()匹配的结果数为".$num1;
echo "<br/>函数preg_match_all()匹配的结果数为".$num2;

//定义一个匹配结果展示的函数
function show($var=null){
if(empty($var)){
echo "null";
}elseif(is_array($var) || is_object($var)){
echo "<pre>";
print_r($var);
echo "</pre>";
}else{
echo $var;
}
}
?>

小结:preg_match()只会匹配出符合模式的第一个元素

          preg_match_all()会匹配出符合模式的所有元素

NO A PIC YOU SEE A XXX

//执行结果如下图

//***************************************************************************************

2-----字符串替换函数preg_replace()与preg_fileter()的使用

//第一段代码是字符串的匹配替换  第二段代码是数组的匹配替换(一一对应)

代码段1:

<?php
$pattern='/[0-9]/';                                           //需替换的元素
$subject='weuyr3ui76as83s0ck9';
$replace="测试";                                             //替换后的元素
$rest1=preg_replace($pattern, $replace, $subject);     
$rest2=preg_filter($pattern, $replace, $subject);  

show($rest1);       //output---weuyr测试ui测试测试as测试测试s测试ck测试
echo "<hr />";
show($rest2);      //output---weuyr测试ui测试测试as测试测试s测试ck测试

//定义一个匹配结果展示的函数
function show($var=null){
if(empty($var)){
echo "null";
}elseif(is_array($var) || is_object($var)){
echo "<pre>";
print_r($var);
echo "</pre>";
}else{
echo $var;
}
}
?>

代码段2

<?php
$pattern=array('/[012345]/','/[6789]/');        //0到5用 “测” 替换,6到9用 “试” 替换 
$subject='weuyr3ui76as83s0ck9';               
$replace=array('测','试');                
$m1=$m2=array();                                          
$rest1=preg_replace($pattern, $replace, $subject);        
$rest2=preg_filter($pattern, $replace, $subject);  

show($rest1);    //输出---weuyr测ui试试as试测s测ck试                      
echo "<hr />";   //输出---weuyr测ui试试as试测s测ck试
show($rest2);

//定义一个匹配结果展示的函数
function show($var=null){
if(empty($var)){
echo "null";
}elseif(is_array($var) || is_object($var)){
echo "<pre>";
print_r($var);
echo "</pre>";
}else{
echo $var;
}
}
?>

也许到这里你会觉得这两函数的执行效果是一样的啊,没班毛线的区别啊,No,当,替换的原始对象是也是一个数组时会是什么情况呢?

<?php
$pattern=array('/[012345]/','/[6789]/');                                         
$subject=array('weuy','r3ui','76as','83s','0ck9');               
$replace=array('测','试');                
$m1=$m2=array();                                          
$rest1=preg_replace($pattern, $replace, $subject);        
$rest2=preg_filter($pattern, $replace, $subject);  
show($rest1); 
echo "<hr />";
show($rest2);
//定义一个匹配结果展示的函数
function show($var=null){
if(empty($var)){
echo "null";
}elseif(is_array($var) || is_object($var)){
echo "<pre>";
print_r($var);
echo "</pre>";
}else{
echo $var;
}
}
?>

结果如下图

说明:前者是preg_replace()函数,不和服替换条件会原样输出-----------5个元素

           后者是preg_filter()函数,不符合提交的会被过滤掉------------------4个元素


函数preg_grep()将符合模式的元素查找出来

<?php
$pattern='/[0-9]/';                                           //定义匹配的模式
$subject=array('weuy','r3ui','76as','83s','0ck9');                                                              
$rest1=preg_grep($pattern, $subject);         
show($rest1); 
//定义一个匹配结果展示的函数
function show($var=null){
if(empty($var)){
    echo "null";
}elseif(is_array($var) || is_object($var)){
echo "<pre>";
print_r($var);
echo "</pre>";
}else{
echo $var;
}
}
?>

//*******************************

运行结果

Array
(
    [1] => r3ui
    [2] => 76as
    [3] => 83s
    [4] => 0ck9
)

//******************************

© 著作权归作者所有

共有 人打赏支持
雨醉风尘
粉丝 3
博文 73
码字总数 23692
作品 0
海淀
程序员
在PHP中使用正则表达式进行查找替换

首先需要声明的是,其实我对正则的应用也不是特别地熟练,只不过是在工作中“被逼无奈”才一步步地对正则有了一些了解。随着对正则的了解越多,越来越发现正则表达式真的是一个很强有力的工具...

技术小胖子 ⋅ 2017/11/15 ⋅ 0

正则表达式简介

1 前言 php被大量的应用于Web的后台CGI开发,通常是在用户数据数据之后得出某种结果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是"2月30日"!那应该怎么样来检验暑假是...

morebetter1 ⋅ 2011/10/27 ⋅ 0

PHP入门(2)——正则匹配

我们来看下PHP进行正则匹配的一个简单例子:![正则匹配例子][1] 可以通过PHP的内置web服务器来查看运行结果,不出意外的话你可以看到如下输出, 接下来我们来仔细分析这个代码。 preg_match...

abing_hu ⋅ 2014/03/17 ⋅ 0

正则表达式及php中的正则函数

正则表达式 (regular expression), 常简写为 regex, 用于在字符串中进行比较复杂的匹配 perl 和 ereg 现有两种类型的正则表达式 perl 和 POSIX, perl 类型 更规范,执行效率越高, POSIX 类型...

GIpanda ⋅ 2014/06/14 ⋅ 0

PHP 正则表达式匹配 preg_match 与 preg_match_all 函数

正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的内容 正则替换:根据正则表达式匹配内容并替换 正则分割:根据正则表达式分割字符串 在...

ywppengpeng ⋅ 2016/11/14 ⋅ 0

[python爬虫] 正则表达式使用技巧及爬取个人博客实例

这篇博客是自己《数据挖掘与分析》课程讲到正则表达式爬虫的相关内容,主要简单介绍Python正则表达式爬虫,同时讲述常见的正则表达式分析方法,最后通过实例爬取作者的个人博客网站。希望这篇...

Eastmount ⋅ 2017/10/18 ⋅ 0

《PHP扩展学习系列》系列技术文章整理收藏

《PHP扩展学习系列》系列技术文章整理收藏 1PHP扩展之文本处理(二)——PCRE正则表达式语法10——后向引用 http://www.lai18.com/content/321526.html 2PHP扩展之文本处理(二)——PCRE正则...

开元中国2015 ⋅ 2015/07/11 ⋅ 0

一步步学习让我头疼的正则表达式

一、正则表达式简介 二、正则表达式的组成: 1、定界符: 2、原子: 3、元字符 ,+ ,? {m,n} 4、模式修正符(7个,重点3个) 三、正则表达式的函数 附:最常用的正则实践 正则练习";///匹配手...

流云的博客 ⋅ 2015/07/01 ⋅ 0

ThinkPHP助手

ThinkPHP助手 简介 ThinkPHP助手是运行在本地的ThinkPHP开发辅助性工具,也是本人的初学LAMP的学习成果,基于ThinkPHP+XML,前端采用jQuery和Bootstrap。主要目的是将应用开发过程中的一些繁琐...

朱__朱 ⋅ 2012/11/16 ⋅ 2

正则表达式中的子组模式

作者:西瓜玩偶(racnil070512 at hotmail dot com) 一、基础知识 在PCRE正则表达式中,我们可以利用圆括号定义一个子组,我们可以使用pregmatch函数(其他函数的信息请参考PHP官方API文档)...

snowing1990 ⋅ 2016/03/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 35分钟前 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 43分钟前 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 53分钟前 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部