php废弃函数ereg_replace(),如何用preg_replace()替换?
发布于 作者:苏南大叔 来源:程序如此灵动~

书接前文,苏南大叔在本篇文章中,继续描述php
的废弃函数ereg_replace()
,它的替代函数是:preg_replace()
。本文中的整体思路和ereg()
函数的替代方案差不多。所以,大家可以对照着看看。相关链接请参见文末。

本文测试环境:mac
、php@5.6
。ereg_replace()
的替代方案是:preg_replace()
。本文具体描述替代这个方案的细节之处。
基本描述
ereg_replace()
是个使用正则的replace
过程,和普通的str_replace()
不一样的地方是:要保留正则匹配到的文字,而不是在正则中,显示输出的文字。
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()
。
- 主要是需要添加定界符
/
,注意转义特殊字符/
到\/
. - 如果不想做
/
转义的话,就需要更换定界符/
为#
或者@
或者|
。

替换规则$replacement
在这里替换规则,出现了两种表达方式:
- 第一种表述方式是:
//1
和//2
,这个通用。ereg_replace()
和preg_replace()
都是可以识别的。 - 另外一种表达方式是:
$1
和$2
,这个并不通用。只有preg_replace()
可以识别。

相关链接
- 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
的文章呢,在下面的这个链接里面,都是苏南大叔亲手写出来的。


