php - preg_match

任务:匹配一个函数名或者变量名,如果碰到alpha,numeric,_以外的全部不允许通过。

实验1:

<?php
//第一个字符不符合就直接退出正则匹配
$str = '%abcscript%d';
var_dump(preg_match('/^(\w*)$/', $str, $matches));
var_dump($matches);
#########output########
#int(0)
#array(0) {
#}
########################匹配到
$str1 = 'abcscriptd123_';
var_dump(preg_match('/^(\w*?)$/', $str1, $matches));
var_dump($matches);
#########output########
#int(1)
#array(2) {
#    [0]=>
#    string(14) "abcscriptd123_"
#    [1]=>
#    string(14) "abcscriptd123_"
#}
########################中间有不匹配模式的
$str2 = 'acd%acd';
var_dump(preg_match('/^(\w*?)/', $str2, $matches));
var_dump($matches);
#########output########
#int(1)
#array(2) {
#    [0]=>
#        string(0) ""
#    [1]=>
#        string(0) ""
#}
#####################
//检查一个字符串里面仅包含字母数字或者下划线

 第一个的结果显而易见,preg_match返回0,第二个的结果如预期是全串都符合并匹配到,第三个的结果有些出人意料,那为什么preg_match返回1,而$matches未如预期一样包含匹配到的acd呢?

再做一个实验,实验2

<?php
#中间有不匹配模式的
$str2 = 'acd%acd';
var_dump(preg_match('/^(\w*)/', $str2, $matches));
var_dump($matches);
#########output########
#int(1)
#array(2) {
#  [0]=>
#  string(3) "acd"
#  [1]=>
#  string(3) "acd"
#}
#####################

实验2的结果:这次可以匹配到符合条件的部分子串 "acd" 了。

对比结果表明:?这个贪婪匹配符起到了很重要的作用,但是对其的工作原理仍然不甚明了。需要继续深入理解。 

那么如何完成任务?要检查一个字符串是否只包含alpha, numeric, _

结论是: preg_match('/(\w*)/', $str, $matches);

检查$matches[1] == $str,如果为true则表示该字符串满足条件,为false则表示该字符串不满足条件

<?php
$str = 'acd123_';
var_dump(check_word($str));
$str = 'acd%123_';
var_dump(check_word($str));
$str = '%acd123_';
var_dump(check_word($str));function check_word($str)
{preg_match('/^(\w*)/', $str, $matches);if($matches[1] == $str){return true;} else {return false;}   
}

输出:

bool(true)
bool(false)
bool(false)

任务:把ubb中img标签的内容找出来[img]100.png[/img]

目标:熟悉正则表达式中()的用法

代码:

<?php$str = '[img]100[/img]test.png[img]1000[/img]';
preg_match_all('/\[img\](.*?)\[\/img\]/', $str, $matches);
var_dump($matches);

  

输出:

array(2) {[0]=>array(2) {[0]=>string(14) "[img]100[/img]"[1]=>string(15) "[img]1000[/img]"}[1]=>array(2) {[0]=>string(3) "100"[1]=>string(4) "1000"}
}

任务:把[img]100[/img]提取出来,满足两个要求:能够提取100,并且能够提取出[img]100[/img]这样的模式

目标:熟悉正则表达式中()的用法

代码:

<?php$str = '[img]100[/img]test.png[img]1000[/img]';
preg_match_all('/(\[img\](.*?)\[\/img\])/', $str, $matches);
var_dump($matches);

 

输出: 

array(3) {[0]=>array(2) {[0]=>string(14) "[img]100[/img]"[1]=>string(15) "[img]1000[/img]"}[1]=>array(2) {[0]=>string(14) "[img]100[/img]"[1]=>string(15) "[img]1000[/img]"}[2]=>array(2) {[0]=>string(3) "100"[1]=>string(4) "1000"}
}

理解:正则表达式的括号()能提取字符串中的那些匹配的串,0号match是整个模式的匹配串,1号match是从左往右的第一个()括号中匹配的内容,2号match是第二个()括号中匹配的内容,以此类推。

 

关于preg_match_all, 可见另一篇文章:http://www.cnblogs.com/helww/p/3248345.html

 

keyword: preg_match preg_match_all

转载于:https://www.cnblogs.com/helww/p/3466720.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wp网站链接不带html,解决WordPress网站带与不带WWW网址跳转问题

我们在用wordpress搭建网站的时候是不是有些时候发现在输入WWW与不带WWW的地址都可以打开&#xff0c;以前我在配置的时候直接用WWW或者不带WWW只需要在后台设置两个统一的地址就可以。这几天在遇到一个网站发现并不是这样的&#xff0c;即便都设置了WWW的域名&#xff0c;然后…

Android环境搭建遭遇Unsupported major.minor version 52.0

为什么80%的码农都做不了架构师&#xff1f;>>> 首先&#xff0c;个人在windows 10下配置Android的开发环境。由于之前在开发Java web,所以安装了eclipse&#xff0c;MyEclipse,jdk 1.7 等。由于希望开发 android 5.1&#xff0c;早在之前也有开发过Android&#x…

[转] 实战 SSH 端口转发

http://www.cnblogs.com/napoleon_liu/articles/2020759.html转载于:https://www.cnblogs.com/GenghisKhan/archive/2012/02/09/2343468.html

标准用户如何打开计算机管理,WIN7标准账户怎样开启Administrator账户

Win7 标准用户安装软件时需要管理员权限&#xff0c;那么WIN7标准账户怎样开启Administrator账户呢?下文学习啦小编就分享了WIN7标准账户开启Administrator账户的方法&#xff0c;希望对大家有所帮助。WIN7标准账户开启Administrator账户方法一、将标准用户升级为管理员账户。…

linux删除、读取文件原理

linux删除文件原理 LINUX的文件名是存在父目录的block里面&#xff0c;并指向这个文件额inode节点&#xff0c;这个文件的inode节点再标记指向存放这个文件的block的数据块。我们删除一个文件&#xff0c;实际上并不是清楚inode节点和block的数据。只是在这个文件的父目录里面的…

delphi 窗体的释放

关于窗体的释放:Close&#xff08;&#xff09;方法是将窗体隐藏&#xff0c;即form.hide; 释放窗体或是控件的标准用法是Form.Free&#xff0c;其实Free方法只是调用了Destroy&#xff08;&#xff09;方法&#xff0c;在窗体不为nil时进行资源的释放&#xff0c;但并不将窗体…

Java数字、货币格式化

广州疯狂软件学院拥有三大课程体系包括&#xff1a;java课程&#xff0c;android课程&#xff0c;ios课程&#xff0c;本月基础强化营(可先就业后付款)火热报名中&#xff0c;欢迎有志之士电话或者咨询。 package com.tq365.util; import java.text.NumberFormat; import java.…

您没有足够的全新为该计算机所有用户安装,我用的是admin管理员身份可安装软件弹出你没有足够的权限为该计算机所有用户完成此安装.请以管理员的身份登...

匿名用户1级2012-05-13 回答估计你的是WIN7的系统。这个很正常的&#xff0c;你是用管理员账号登陆的&#xff0c;但是没有取得完全管理权限。WIN7拥有管理员权限的使用方法&#xff1a;1.右键单击“计算机”&#xff0c;进入“管理”找到“用户和组”2.找到administrators&…

eclipse 3.7安装扩展心得

最近因为突然对android发生兴趣了&#xff0c;所以就安装了eclipse来进行android开发学习。在安装过程中&#xff0c;突然想顺便把php的扩展也安装好&#xff0c;以方便以后使用&#xff0c;百度了很多下&#xff0c;很失败&#xff0c;网络上的文章要不是千篇一律的错误&#…

【心得】Ctrl+Z、\n、\0、eof的区别和用法

从scanf谈起&#xff1a; 一&#xff1a;scanf的返回值&#xff1a;读入的域的个数 int scanf( const char *format [, argument]... ); int _scanf_l( const char *format, locale_t locale [, argument]... ); int wscanf( const wchar_t *format [, argument]... ); int _ws…

MVC-05 Model(1)

在开发应用程序的过程中&#xff0c;经常需要处理许多大大小小的数据&#xff0c;例如&#xff0c;SQL Server数据库存取、连接AD(Active Directory&#xff09;数据库进行验证、调用外部Web Service取得数据等。除了访问数据外&#xff0c;也经常需要对数据做成格式验证、逻辑…

计算机 数据库知识点,数据库知识点总结

实体&#xff0d;联系模型基本概念实体和属性实体是客观存在并且可以相互区分的任何事物属性是实体所代表事物具有的某种特性每个属性都有一定的取值范围&#xff0c;成为该属性的值域实体集和码实体集是具有相同属性的实体的集合实体的值是该实体诸属性值的列表实体集的值是该…

计算机网络课程思政教学设计,信息与网络工程学院成功举办第一届课程思政教学设计大赛...

为有效贯彻全国高校思想政治工作会议精神&#xff0c;强化课程思政建设&#xff0c;全面提高人才培养质量&#xff0c;根据《教务处关于举办第一届课程思政教学设计大赛的通知》要求&#xff0c;结合学院工作安排&#xff0c;7月18日&#xff0c;信息与网络工程学院在龙湖校区西…

Java 中参数传递是传值还是引用?

2019独角兽企业重金招聘Python工程师标准>>> 明确概念 值传递&#xff1a;指的是将变量的一个备份传过去&#xff0c;当该备份被修改后&#xff0c;不会影响原来变量的值&#xff1b; 引用传递&#xff1a;指的是将该变量的地址传过去&#xff0c;当值修改后&#x…

sencha touch 手势识别左右滑动

sencha touch 中添加手势识别非常简单&#xff0c;就是监听 dom 元素的 move 事件&#xff1a; 1. 为你的 view 注册 swipe 事件 // 为当前 view 注册手势滑动事件 Ext.get(myTouchView).on(swipe, onViewSwipe, this); 2. 判断滑动方向 // 手势滑动监听事件 onViewSwipe : fun…

比较两浮点数的方法

在工作中&#xff0c;我需要比较一系列数据&#xff0c;一方数据精度为两位小数,而另一方精度为三位小数。我需要将三位小数四舍五入成两为小数后进行比较。在操作的过程中&#xff0c;问题出现了&#xff0c;明明应该相等的数据却走了不等的分支。什么原因导致呢&#xff1f;一…

IIS8托管WCF服务

WCF服务程序本身不能运行&#xff0c;需要通过其他的宿主程序进行托管才能调用WCF服务功能&#xff0c;常见的宿主程序有IIS&#xff0c;WAS&#xff0c;Windows服务&#xff0c;当然在学习WCF技术的时候一般使用控制台应用程序或WinForm程序进行托管。本文将详细介绍如何使用I…

北京师范大学认知神经科学 计算机,北京师范大学认知神经科学和学习国家重点实验室.pdf...

北京师范大学认知神经科学和学习国家重点实验室北京师范大学认知神经科学与学习国家重点实验室DTI 、静息fMRI、形态学测量原理及数据分析与应用深度讲习班(第二轮通知)近年来&#xff0c;磁共振技术已广泛地应用到神经科学、认知神经科学、临床医学等领域的研究&#xff0c;而…

JAVA面向对象-----instanceof 关键字

instanceof 关键字 1&#xff1a;快速演示instanceof Person pnew Person();System.out.println( p instanceof Person); 2&#xff1a;instanceof是什么&#xff1f; 1&#xff1a;属于比较运算符&#xff1a; 2&#xff1a;instanceof关键字&#xff1a;该关键字用来判断一…

电子工程师必去的论坛网站

Abstract 搞电子不能闭门造车&#xff0c;要到网上去交流交流&#xff0c;做个网络吸血鬼也好。本人偶然也发一些资料&#xff0c;还是要感谢活跃在各大论坛上的大虾们&#xff0c;让小弟要走了不少弯路。有问题google一下&#xff08;不是本人崇洋媚外&#xff0c;google的功能…