php:ereg_replace函数的替代方案preg_replace
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔的wordpress
,想安装一款yusi1.0
主题。但是这款yusi1.0
主题,似乎自从面世就没有更新过...而且官网下载到的版本,被数字公司家的产品报毒。只好付费进群下载到一个不报毒的yusi1.0
版本。
ereg_replace
函数已经被放弃,替代方案是preg_replace
。那么,具体上来说,如何进行更新换代呢?测试环境:mac
,php72
。
php72
下的报错信息
然而,这款yusi1.0
主题与最新的php7.27
是不兼容的。报错信息是:
Uncaught Error: Call to undefined function ereg_replace()
ereg-replace函数说明
在php文档中,苏南大叔看到的说明是:这个ereg_replace()
函数已经被废弃了。官方建议使用preg_replace()
进行替代,而两者的区别上几乎是不大的。仅在于第一个参数的正则表达式写法不一致。
preg_replace() 函数使用了 Perl 兼容正则表达式语法,通常是比 ereg_replace() 更快的替代方案。
正则上的区别
正则表达式上,其实总是不那么容易理清的。那么还是以这款yusi1.0
主题来说明一下吧。原函数是这样的:
ereg_replace("<div[^>]*><ul[^>]*>", "", wp_nav_menu(array('theme_location' => 'mbt-mainmenu', 'echo' => false)));
正则部分是:<div[^>]*><ul[^>]*>
,看上去就不是个正常的正则。
所以,苏南大叔修改一下/wp-content/themes/yusi1.0/header.php
文件里面的代码。
变成了下面这样:
{<div[^>]*><ul[^>]*>}"
:
preg_replace("{<div[^>]*><ul[^>]*>}", "", wp_nav_menu(array('theme_location' => 'mbt-mainmenu', 'echo' => false)) );
或者这样,/^<div[^>]*><ul[^>]*>$/
:
preg_replace("/^<div[^>]*><ul[^>]*>$/", "", wp_nav_menu(array('theme_location' => 'mbt-mainmenu', 'echo' => false)) );
或者这样,/<div[^>]*><ul[^>]*>/
:
preg_replace("/<div[^>]*><ul[^>]*>/", "", wp_nav_menu(array('theme_location' => 'mbt-mainmenu', 'echo' => false)) );
结论
preg_replace
替代ereg_replace
,其实是有条件的:需要修改正则的表达式内容(写法)。改完写法后,就可以正常使用了。
历史的潮流不可阻挡,那么你搞清楚了自己在哪个流里面了么?更多php
相关的经验文章,请点击苏南大叔的更多经验文章。https://newsn.net/tag/php/ 。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。