不知名互联网资讯博主,老币民,币圈波段王,逃顶高手,清关大王

多说升级Function split()错误解决办法

1

要饭 @ 30-08-2013 分类: 无聊

好几天没有写文章,早上醒来登录wordpress后台,发现提示有插件需要升级,一看,是多说,随手就给升级了下,刷新前台一篇文章想看升级的插件有啥新的变化,结果在页首发现提示Function split() is deprecated in …duoshuo/WordPress.php文件。突然想起来,这个是老问题了,自从dreamhost升级了php版本后就经常有这种问题出现,以前帝国的cms也遇到过。

这个问题具体点就是因为PHP的版本不同所导致的,多说本身程序开发的时候用的是PHP5.2以下版本,而现在dreamhost空间上用的是PHP5.3的版本,很多PHP函数已经过时不能用了,这里的这个错误原因就是函数split()在 PHP5.3 中已经不建议使用了。

* POSIX → PCRE
* ereg_replace() → preg_replace()
* ereg() → preg_match()
* eregi_replace() → preg_replace()
* eregi() → preg_match()
* split() → preg_split()
* spliti() → preg_split()
* sql_regcase() → No equivalent

上面的是不建议使用的Function (POSIX), 与建议替换成的Function (PCRE) 列表, 详可见: PHP: Differences from POSIX regex

知道了具体原因,解决起来就简单的多了。

preg_split(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to split(). If you don’t require the power of regular expressions, it is faster to use explode(), which doesn’t incur the overhead of the regular expression engine.However, for what you are doing, just use explode() again.

中文的意思就是:

* 需要regex 的split, 可用preg_split() 代替
* 不需要regex, 只要要快速分割固定的字串, 可用explode() 代替. (速度会比需要regex 的快很多)

多说的问题直接把split()替换成explode()即可解决,注意搜索duoshuo/WordPress.php文件有2个split,第一个key.split不需要替换,直接把第二个split( ‘/’, $_SERVER[‘PHP_SELF’] ) )的split替换成explode即可解决问题。


Comments

我也时不时遇到这种兼容问题

Post a comment