批量替换整个项目中已弃用的函数

时间:2014-10-15 20:11:11

标签: regex

我有一堆PHP编码的网站,最近已被转移到PHP 5.4服务器,他们正在抛弃弃用警告和错误。

有没有办法大规模找到&用正确的名称替换函数名称?例如,我希望能够用unset替换session_unregister('someVar')的所有实例($ _ SESSION ['someVar'])...

我应该使用正则表达式还是有其他方式?

1 个答案:

答案 0 :(得分:1)

对于此特定示例,您可以使用sed,如下所示:

echo "session_unregister('someVar')" | sed 's/session_unregister(/unset\($_SESSION[/;s/)/])/'

更灵活的是使用C预处理器。假设您的php源文件名为my.php。添加扩展程序.h,使其成为my.php.h。在文件的开头,插入:

#define session_unregister(X) unset($_SESSION[X])

假设该文件包含示例中的行:session_unregister('someVar')

像这样运行预处理器:

cc -E my.php.h

现在你应该看unset($_SESSION['someVar']) (加上一些你不想要的额外垃圾)。

请注意,这只是回答您的特定问题,但如果没有更详细的测试,我不会推荐它。