php废弃函数ereg_replace(),如何用preg_replace()替换?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
书接前文,苏南大叔在本篇文章中,继续描述php
的废弃函数ereg_replace()
,它的替代函数是:preg_replace()
。本文中的整体思路和ereg()
函数的替代方案差不多。所以,大家可以对照着看看。相关链接请参见文末。
本文测试环境:mac
、php@5.6
。ereg_replace()
的替代方案是:preg_replace()
。本文具体描述替代这个方案的细节之处。
基本描述
ereg_replace()
是个使用正则的replace
过程,和普通的str_replace()
不一样的地方是:要保留正则匹配到的文字,而不是在正则中,显示输出的文字。
ereg_replace ( string $pattern , string $replacement , string $string ) : string
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
preg_replace()
是目前的推荐方案,必选参数3个,可选参数3个。基本上可以覆盖ereg_replace()
的三个必选参数。只不过是参数的具体用法不同。返回值是基本上一致的。
在php5.6
中,ereg_replace()
和preg-replace()
同时存在,只不过ereg_replace()
是个warning
。在php@7
系列中,ereg_replace()
是undefined function
,而preg-replace()
依然正常使用。
正则表达式$pattern
第一个参数$pattern
是需要特殊处理,才能正常从ereg_replace()
迁移到preg-replace()
。
- 主要是需要添加定界符
/
,注意转义特殊字符/
到\/
. - 如果不想做
/
转义的话,就需要更换定界符/
为#
或者@
或者|
。
$s = "https://newsn.net/";
$pattern = "(.*)://(.*).net/";
$pattern2= "(.*):\/\/(.*).net\/";
$replacement = "\\1s://\\2.com.cn";
$result = ereg_replace($pattern, $replacement, $s);
$result2 = preg_replace("/".$pattern2."/", $?, $s);
$result3 = preg_replace("#".$pattern."#", $replacement, $s);
$result4 = preg_replace("@".$pattern."@", $replacement, $s);
$result5 = preg_replace("|".$pattern."|", $replacement, $s);
替换规则$replacement
在这里替换规则,出现了两种表达方式:
- 第一种表述方式是:
//1
和//2
,这个通用。ereg_replace()
和preg_replace()
都是可以识别的。 - 另外一种表达方式是:
$1
和$2
,这个并不通用。只有preg_replace()
可以识别。
$s = "https://newsn.net/";
$pattern = "(.*)://(.*).net/";
$replacement = "\\1s://\\2.com.cn";
$replacement2 = "$1s://$2.com.cn";
$result = ereg_replace($pattern, $replacement, $s);
$pattern2= "(.*):\/\/(.*).net\/";
$result2 = preg_replace("/".$pattern2."/", $replacement2, $s);
$result3 = preg_replace("#".$pattern."#", $replacement2, $s);
$result4 = preg_replace("@".$pattern."@", $replacement2, $s);
$result5 = preg_replace("|".$pattern."|", $replacement2, $s);
相关链接
- https://newsn.net/say/php-deprecated-ereg.html
- https://www.php.net/manual/zh/function.ereg-replace.php
- https://www.php.net/manual/zh/function.preg-replace.php
总结
为啥苏南大叔会和这个废弃的php
函数过不去呢?因为有几个老的代码要做兼容处理。真心是无奈啊。更多php
的文章呢,在下面的这个链接里面,都是苏南大叔亲手写出来的。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。