<?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()正则匹配比较讲解的更多相关文章

  1. php中的正则函数主要有三个-正则匹配,正则替换

    php中变量的声明? 由于php声明变量的时候, 不支持使用 var关键字, 又不能直接写一个变量名字, 孤零零的放在那里, 所以, 在php中声明变量的方式, 同时也是给变量初始化的形式, 即: & ...

  2. php基础33:正则匹配-perl

    <?php //1.搜索数组中的相匹配的字符串 //preg_grep() 返回一个数组 $language = array("php","asp",&q ...

  3. php中的正则函数:正则匹配,正则替换,正则分割 所有的操作都不会影响原来的字符串.

    有一个长期的误解, 如果要分组, 必须用 小括号 和 |, 而不能用 中括号 和 |. [ab|AB]表示的不是 匹配 ab或 AB, 而是表示 匹配 a,b, |, A, B 这5个字符中 的任意 ...

  4. PHP正则匹配与替换的简单例子

    PHP正则匹配与替换的简单例子,含一个匹配获取加租字体例子和一个匹配替换超链接的例子. 1.查找匹配 <b> 与 </b> 标签的内容: <?php $str = &qu ...

  5. php 正则匹配省市区

    匹配指定前后内容中的值 如匹配/xxx-abc中的abc preg_match('/\/xxx-([^<]*)/i', $route, $matches); echo $matches[1]; ...

  6. PHP正则匹配到2个字符串之间的内容,匹配HTML便签内容

    PHP正则匹配到2个字符串之间的内容 $preg= '/xue[\s\S]*?om/i'; preg_match_all($preg,"学并思网址xuebingsi.com",$r ...

  7. 正则匹配闭合HTML标签(支持嵌套)

    任何复杂的正则表达式都是由简单的子表达式组成的,要想写出复杂的正则来,一方面需要有化繁为简的功底,另外一方面,我们需要从正则引擎的角度去思考问题.关于正则引擎的原理,推荐<Mastering R ...

  8. 正则匹配抓取input 隐藏输入项和 <td>标签内的内容

    这里不多作解释了,只要提供方法,如果想了解正则匹配,就去百度. 第一条是,匹配出所有的隐藏输入域 $patern = "/<input(.*?)type=\"hidden\& ...

  9. js正则匹配的一个日常应用

    应用实例 1 /** 将段落中的 \n 转换为 <p></p>, 规范存储 */ 2 function formatParagraphForStore(val) { 3 var ...

随机推荐

  1. 【Unity3D】Unity3D之 Resources.Load 动态加载资源

    [Unity3D]Unity3D之 Resources.Load 动态加载资源 1.Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建一个名为Resources的文件夹 ...

  2. php29号小结(隔行换色······)

    1.给表单加样式,可以用css.php与js.js这三种,其中最好用php与js,现在很推广用这种. css3样式隔行换色(table中) tr:nth-child(even){ background ...

  3. 20140215-搭建phonegap开发环境

    1.安装jdk,配置环境变量 a)设置 JAVA_HOME =E:\SetUpFiles\win8.1\Java\jdk1.6.0_45 b)设置PATH=E:\SetUpFiles\win8.1\J ...

  4. ListView 总结----持续中

    ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用的依 ...

  5. opencv获取图片sift特征

    利用opencv2.3来获取图片的sift特征,并输出到标准输出,可用重定向到文件. #include<cstdio> #include"opencv2/opencv.hpp&q ...

  6. 利用Nutch和Tomcat构建搜索引擎

    利用Nutch和Tomcat构建搜索引擎 1.安装环境及软件版本介绍 本教程是在Linux Ubuntu 12.04 desktop i386操作系统上搭建,结合使用了Nutch-1.2和Apache ...

  7. 开始进入Windows Phone 8开发

    和大家一起分享从零开始,入手Windows Phone 8开发,大家一起来吧!

  8. SPL标准库常用的数据结构

    栈数据结构 $stack = new SplStack(); //栈数据结构->先进后出 2 $stack->push('data1'); //入栈 $stack->push('da ...

  9. 利用VSCode进行.Net Core初尝试

    1.下载.Net Core,https://www.microsoft.com/net/core#windows,按照页面提示进行SDK的安装. 2.下载VsCode,https://www.visu ...

  10. 关于CSS中的PX值(像素)

    场景: 人物:前端实习生「阿树」与 切图工程师「玉凤」事件:设计师出设计稿,前端实现页面 玉凤:树,设计稿发给你啦,差那么点像素,就叼死你┏(  ̄へ ̄)=☞阿树:~(>_<)~毛问题噶啦~ ...