php的ereg_replace()函数使用总结(转)
2012-02-24 21:18
309 查看
最近写php的时候,用到了ereg_replace()方法,在这里正好总结一下。
手册上的解释如下:
ereg_replace -- 正则表达式替换(PHP 3, PHP 4, PHP 5)
string ereg_replace ( string pattern, string replacement, string string )
本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。
返回替换后的字符串。(如果没有可供替换的匹配项则会返回原字符串。)
如果 pattern 包含有括号内的子串,则 replacement 可以包含形如\\digit 的子串,这些子串将被替换为数字表示的的第几个括号内的子串;\\0 则包含了字符串的整个内容。最多可以用九个子串。括号可以嵌套,此情形下以左圆括号来计算顺序。
如果未在 string 中找到匹配项,则 string 将原样返回。
例如,下面的代码片断输出 "This was a test" 三次:
<?php
$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);
?>
输出如下:
That was a test
That was a test
That was a test
=====================上面是手册上的解释==================================
看了半天才发现,其实很简单。
语法:string ereg_replace ( string pattern, string replacement, string string )
在string字符串中寻找与pattern匹配的字符串,然后把它替换为replacement
然 后就是一个小括号问题,如上面手册上红字所示:如果 pattern 包含有括号内的子串,则 replacement 可以包含形如\\digit 的子串,这些子串将被替换为数字表示的的第几个括号内的子串;digit就是数字\\digit的意思,就是说replacement可以包含 \\数字 的意思。
听起来很绕口,感觉翻译的不是很正确。
我 的理解是如果pattem使用了小括号,()表示小括号为空,( )表示小括号为空格,(is)表示小括号里面有字符。。当patten使用了小括号,replacement就得使用//数字,//1表示替换从第一个小 括号开始和向右的字符串 (即:如果patterm为( )is,replacement为//1was,则如果string中有和" is“匹配的字符串,将" is",替换为"was"。注意这里小括号代表的是空格),//2表示替换第二个小括号开始和它向右的字符串,如此类推……
(我看完手册以为是这个样子,但是不是,奶奶的,不知道是天生就没有写程序的造诣,还是自己愚鲁)
<?php
$string = "That is a test";
echo ereg_replace("( )is", "\\1was", $string);
?>
输出如下:
Thatwas a test //这是我脑海中以为的,但是是错误的,其实并不是这个样子
That was a test //这才是真正显示出来的
正确的替换是这样的如下:
replacement--//1表示替换从第一个小括号的右括号右边开始替换
//2表示替换从第二个小括号的右括号右边开始替换
所以上面的例子中只是替换的is,并没有连空格一起替换
//0手册上写“则包含了字符串的整个内容”,(我又愚鲁了,小学语文不好好学的下场,早知道当初就抱着小学语文老师大腿哭,求她我这种愚鲁的小p孩提高提高语文成绩),使用//0的例子如下:
<?php
$string = "That is a test";
echo ereg_replace("( )is", "\\0was", $string);
?>
输出如下
That iswas a test
<?php
$string = "That is a test";
echo ereg_replace("( )is( )", "\\0was", $string);
?>
输出如下
That is wasa test
<?php
$string = "That is a test";
echo ereg_replace("at( )is( )", "\\0was", $string);
?>
输出如下
That is wasa test
呵呵,//0意思就是说,如果有string中有和patterm匹配的,将整个patterm视为一个括号,然后从这个括号右边添加replacement内容。
最后是patterm的这种情况(is),即小括号中包含字符的情况。
<?php
$string = "That is a test";
echo ereg_replace("(is)", "\\0was", $string);
?>
输出如下
That iswas a test
<?php
$string = "That is a test";
echo ereg_replace("(is)", "\\1was", $string);
?>
输出如下
That iswas a test
终于懂了一点了 ……
希望像我一样懵懂的孩纸看了之后会有收获
手册上的解释如下:
ereg_replace -- 正则表达式替换(PHP 3, PHP 4, PHP 5)
string ereg_replace ( string pattern, string replacement, string string )
本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。
返回替换后的字符串。(如果没有可供替换的匹配项则会返回原字符串。)
如果 pattern 包含有括号内的子串,则 replacement 可以包含形如\\digit 的子串,这些子串将被替换为数字表示的的第几个括号内的子串;\\0 则包含了字符串的整个内容。最多可以用九个子串。括号可以嵌套,此情形下以左圆括号来计算顺序。
如果未在 string 中找到匹配项,则 string 将原样返回。
例如,下面的代码片断输出 "This was a test" 三次:
<?php
$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);
?>
输出如下:
That was a test
That was a test
That was a test
=====================上面是手册上的解释==================================
看了半天才发现,其实很简单。
语法:string ereg_replace ( string pattern, string replacement, string string )
在string字符串中寻找与pattern匹配的字符串,然后把它替换为replacement
然 后就是一个小括号问题,如上面手册上红字所示:如果 pattern 包含有括号内的子串,则 replacement 可以包含形如\\digit 的子串,这些子串将被替换为数字表示的的第几个括号内的子串;digit就是数字\\digit的意思,就是说replacement可以包含 \\数字 的意思。
听起来很绕口,感觉翻译的不是很正确。
我 的理解是如果pattem使用了小括号,()表示小括号为空,( )表示小括号为空格,(is)表示小括号里面有字符。。当patten使用了小括号,replacement就得使用//数字,//1表示替换从第一个小 括号开始和向右的字符串 (即:如果patterm为( )is,replacement为//1was,则如果string中有和" is“匹配的字符串,将" is",替换为"was"。注意这里小括号代表的是空格),//2表示替换第二个小括号开始和它向右的字符串,如此类推……
(我看完手册以为是这个样子,但是不是,奶奶的,不知道是天生就没有写程序的造诣,还是自己愚鲁)
<?php
$string = "That is a test";
echo ereg_replace("( )is", "\\1was", $string);
?>
输出如下:
Thatwas a test //这是我脑海中以为的,但是是错误的,其实并不是这个样子
That was a test //这才是真正显示出来的
正确的替换是这样的如下:
replacement--//1表示替换从第一个小括号的右括号右边开始替换
//2表示替换从第二个小括号的右括号右边开始替换
所以上面的例子中只是替换的is,并没有连空格一起替换
//0手册上写“则包含了字符串的整个内容”,(我又愚鲁了,小学语文不好好学的下场,早知道当初就抱着小学语文老师大腿哭,求她我这种愚鲁的小p孩提高提高语文成绩),使用//0的例子如下:
<?php
$string = "That is a test";
echo ereg_replace("( )is", "\\0was", $string);
?>
输出如下
That iswas a test
<?php
$string = "That is a test";
echo ereg_replace("( )is( )", "\\0was", $string);
?>
输出如下
That is wasa test
<?php
$string = "That is a test";
echo ereg_replace("at( )is( )", "\\0was", $string);
?>
输出如下
That is wasa test
呵呵,//0意思就是说,如果有string中有和patterm匹配的,将整个patterm视为一个括号,然后从这个括号右边添加replacement内容。
最后是patterm的这种情况(is),即小括号中包含字符的情况。
<?php
$string = "That is a test";
echo ereg_replace("(is)", "\\0was", $string);
?>
输出如下
That iswas a test
<?php
$string = "That is a test";
echo ereg_replace("(is)", "\\1was", $string);
?>
输出如下
That iswas a test
终于懂了一点了 ……
希望像我一样懵懂的孩纸看了之后会有收获
相关文章推荐
- PHP正则替换函数preg_replace和preg_replace_callback使用总结
- PHP正则替换函数preg_replace和preg_replace_callback使用总结
- PHP正则替换函数preg_replace和preg_replace_callback使用总结
- php 中的str_replace 函数总结
- php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
- php中preg_replace()和ereg_replace()函数的用法区别
- php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
- php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
- PHP字符串比较函数strcmp()和strcasecmp()使用总结
- php中正则替换函数ereg_replace用法实例
- PHP ereg_replace()函数的工作原理解析
- php5.3新旧函数替换收集(ereg|eregi|ereg_replace|eregi_replace)
- PHP中的strtr函数使用介绍(str_replace)
- 关于php中date()函数的使用总结及查询当前日期所在一周的起始、结束日期
- php 图书管理信息系统使用函数总结
- php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
- PHP 错误与异常 笔记与总结(11 )register_shutdown_function() 函数的使用
- PHP 字符串正则替换函数preg_replace使用说明