PHP之preg_replace()与ereg_replace()正则匹配比较讲解
<?php
//preg_replace()和ereg_replace()函数的使用的比较
// -------preg_replace()--------------------------
//1.进行字符串的查找的替换
$str = "daoyu shi ge hao hai zi 5555";
$pattern = "/\s/"; //如果将变量定义为$pattern_1会出错
$str = preg_replace($pattern,'-',$str);
echo $str."<br>";
/*打印:
daoyu-shi-ge-hao-hai-zi-5555
*/
//2.对字符串的逆向引用
//方法一
$pat = "/(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\d+)/i";
$str =preg_replace($pat,"\$1",$str);
echo $str."<br>";
/*打印:
daoyu
*/
//注意:如果是下面这种形式你会发现匹配的是:zi- 所以可以这样认为在有次数的{6}的情况下,他($1)匹配的是最后一次
$pat = "/((\w+)-){6}(\d+)/i";
$str =preg_replace($pat,"\$1",$str);
echo $str."<br>";
/*打印:
zi-
*/
//方法二
$str = "daoyu-shi-ge-hao-hai-zi-5555";
$pat = "/(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\d+)/i";
$str =preg_replace($pat,"\\1",$str);
echo $str."<br>";
/*打印:
daoyu
*/
//注意:当正则写成$pat= "/((\w+)-){6}(\d+)/i";时和上面的情况一样
//3 当参数是数组的情况(用下手册的例子)
$string = "The quick brown fox jumped over the lazy dog.";
$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";
$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";
print preg_replace($patterns, $replacements, $string)."<br>";
/*打印
The bear black slow jumped over the lazy dog.
*/
//或许你已经发现了,他是按“将以其键名在数组中出现的顺序来进行处理。这不一定和索引的数字顺序相同”按我的理解就是在按“写”的顺序而这并不一定是//索引的顺序(书册上还有还有ksort()后的例子,时间关系就不说了,有兴趣的兄弟可以自己找着看下)
//好preg_replace()就扯到着,开是扯下一个ereg_replace()
//---------------------ereg_replace()------------------
//1.进行字符串的查找的替换
$str = "daoyu shi ge hao hai zi 5555";
$pattern = "[a-zA-Z]+"; //如果写成$pattern= "/[a-zA-Z]+/"; 将不做任何替换也就是说这里不能用正则“/”(可能就是着两个函数的第一个区别 :))
$str = ereg_replace($pattern,'~',$str);
echo $str."<br>";
/*打印
~ ~ ~ ~ ~ ~ 5555
*/
//2.对字符串的逆向引用
//在用下书册上的例子
$string = "This is a test";
//echo ereg_replace("( )is", "\\1was", $string); //“\\1”匹配”(空格)is“ 这部分的空格,换句话说就是”替换为数字表示的的第几个括号内//的子串“
echo ereg_replace("(( )is)", "\\2was", $string)."<br>";
/*打印
This was a test
*/
$string = "The quick brown fox jumped over the lazy dog.";
$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";
$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";
print ereg_replace($patterns, $replacements, $string)."<br>";
//总结
//1 preg_replace()里面的正则可以写成型如:"/..../"而ereg_replace()里面的正则需写成型如".....";
//2 preg_replace()能操作数组,而ereg_replace()不可以
//3在逆向引用用preg_replace()可使用0-99个,而ereg_replace()最多为9个
//在使用过程中感觉两者的区别不是很大,在功能上也比较相似..
?>
PHP之preg_replace()与ereg_replace()正则匹配比较讲解的更多相关文章
- php中的正则函数主要有三个-正则匹配,正则替换
php中变量的声明? 由于php声明变量的时候, 不支持使用 var关键字, 又不能直接写一个变量名字, 孤零零的放在那里, 所以, 在php中声明变量的方式, 同时也是给变量初始化的形式, 即: & ...
- php基础33:正则匹配-perl
<?php //1.搜索数组中的相匹配的字符串 //preg_grep() 返回一个数组 $language = array("php","asp",&q ...
- php中的正则函数:正则匹配,正则替换,正则分割 所有的操作都不会影响原来的字符串.
有一个长期的误解, 如果要分组, 必须用 小括号 和 |, 而不能用 中括号 和 |. [ab|AB]表示的不是 匹配 ab或 AB, 而是表示 匹配 a,b, |, A, B 这5个字符中 的任意 ...
- PHP正则匹配与替换的简单例子
PHP正则匹配与替换的简单例子,含一个匹配获取加租字体例子和一个匹配替换超链接的例子. 1.查找匹配 <b> 与 </b> 标签的内容: <?php $str = &qu ...
- php 正则匹配省市区
匹配指定前后内容中的值 如匹配/xxx-abc中的abc preg_match('/\/xxx-([^<]*)/i', $route, $matches); echo $matches[1]; ...
- PHP正则匹配到2个字符串之间的内容,匹配HTML便签内容
PHP正则匹配到2个字符串之间的内容 $preg= '/xue[\s\S]*?om/i'; preg_match_all($preg,"学并思网址xuebingsi.com",$r ...
- 正则匹配闭合HTML标签(支持嵌套)
任何复杂的正则表达式都是由简单的子表达式组成的,要想写出复杂的正则来,一方面需要有化繁为简的功底,另外一方面,我们需要从正则引擎的角度去思考问题.关于正则引擎的原理,推荐<Mastering R ...
- 正则匹配抓取input 隐藏输入项和 <td>标签内的内容
这里不多作解释了,只要提供方法,如果想了解正则匹配,就去百度. 第一条是,匹配出所有的隐藏输入域 $patern = "/<input(.*?)type=\"hidden\& ...
- js正则匹配的一个日常应用
应用实例 1 /** 将段落中的 \n 转换为 <p></p>, 规范存储 */ 2 function formatParagraphForStore(val) { 3 var ...
随机推荐
- Linux驱动编程--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正 #include <linux/kernel.h> #include <linux/module.h> ...
- SNRO:Number Range
业务对象是在一定的编号范围内分配编号的,编号既可以是内部分配也可以是外部分配.对于外部分配,用户输入编号,系统检查这个编号是否被占用.对于内部分配,系统会自动的把编号分配给业务对象.所以内部分配和外部 ...
- [转]高并发访问下避免对象缓存失效引发Dogpile效应
避免Redis/Memcached缓存失效引发Dogpile效应 Redis/Memcached高并发访问下的缓存失效时可能产生Dogpile效应(Cache Stampede效应). 推荐阅读:高并 ...
- CentOS 7 用户账户配置
说明: 1.这篇博文记录的是CentOS 7 用户账户的配置,包括添加用户.添加用户组.删除用户.删除用户组等.其中包括分析用户的配置文件.目录以及对安全的思考. 2.用户配置方面CentOS 7与以 ...
- div层遮盖flash(兼容浏览器)
今天测试div层和flash的交互,发现div层总是被flash层遮盖,在百度上找了一会,说是加个<param name="wmode" value="transp ...
- SQL server数据库内置账户SA登录设置
SQL server数据库内置账户SA登录不了 设置SQL Server数据库给sa设置密码的时候 提示18456 解决步骤: 第二步:右击sa,选择属性: 第三步:点击状态选项卡:勾选授予 ...
- 【原】使用ajax的get异常获取数据的时候,IE浏览器总是有缓存
//HTML里有下面这样一段代码 //异步获取准备人信息 $.get("PrepSetpNew/PrepareMainCrew.ashx?Method=GetPrepUserInfo&quo ...
- js 如何获取文本框中光标索引位置
function getTxt1CursorPosition(){ var oTxt1 = document.getElementById("txt1"); var cursurP ...
- AngularJS(16)-路由
AngularJS 路由 本章节我们将为大家介绍 AngularJS 路由. AngularJS 路由允许我们通过不同的 URL 访问不同的内容. 通过 AngularJS 可以实现多视图的单页Web ...
- PHP连接SQL Server(sqlsrv)
配置好php环境后,下载如下依赖包,解压目录选择php的ext目录,并在php.ini中加上(我的php版本为5.6) extension=php_pdo_sqlsrv_56_ts.dll exten ...