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

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

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(图2-1)

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(图2-2)

结论

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

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

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

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。