我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔的wordpress,想安装一款yusi1.0主题。但是这款yusi1.0主题,似乎自从面世就没有更新过...而且官网下载到的版本,被数字公司家的产品报毒。只好付费进群下载到一个不报毒的yusi1.0版本。

苏南大叔:php:ereg_replace函数的替代方案preg_replace - php-ereg_replace
php:ereg_replace函数的替代方案preg_replace(图3-1)

ereg_replace函数已经被放弃,替代方案是preg_replace。那么,具体上来说,如何进行更新换代呢?测试环境:macphp72

php72下的报错信息

然而,这款yusi1.0主题与最新的php7.27是不兼容的。报错信息是:

Uncaught Error: Call to undefined function ereg_replace()

苏南大叔:php:ereg_replace函数的替代方案preg_replace - function_not_exist
php:ereg_replace函数的替代方案preg_replace(图3-2)

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)) );

苏南大叔:php:ereg_replace函数的替代方案preg_replace - fix_done
php:ereg_replace函数的替代方案preg_replace(图3-3)

结论

preg_replace替代ereg_replace,其实是有条件的:需要修改正则的表达式内容(写法)。改完写法后,就可以正常使用了。

历史的潮流不可阻挡,那么你搞清楚了自己在哪个流里面了么?更多php相关的经验文章,请点击苏南大叔的更多经验文章。https://newsn.net/tag/php/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    正则