PHP 从 4 升级到 5 需要使用分隔符更改 ereg_replace() 和 ereg()

PHP upgrade from 4 to 5 requires changing ereg_replace() and ereg() with delimiters

当 运行 前 PHP 4 页在 PHP5 时,我得到 Deprectiated 错误: 我知道那里有一些反斜杠。 (或者它是正斜杠?)但是要替换的“+”项让我失望。

函数 ereg_replace() 已弃用:

$perms = ereg_replace(" +", "&", @trim($tmp[0]));

现在下面这个真的让我动心了。只有在用完我的键盘 G-O-O-G-L-E 键后,我才抓住机会粘贴了一些代码。我决定回答这个问题,希望能帮助像我这样面临挑战的人。 "callback function" 到底是什么?我知道,我可能整天在其他编程语言中使用这些东西。那好吧。我认为我的焦虑程度让我无法正确选择一个论坛来回答我的简单初学者问题。

preg_replace():不推荐使用 /e 修饰符,改用 preg_replace_callback:

$string = preg_replace("/&#([0-9]+)/e","chr('\1')",$string);

我在其他 StackOverKnow 线程和答案中的困惑是示例过于详尽。我认为有人(包括我)可以从简单地输入以正确语法修复的示例中受益。我只是不太关注这个主题,而且由于这个 RTF 生成器中有数百万行代码,我不得不升级 我害怕 "sprong!" 效果:我改变了一些东西并发生了级联问题而且我永远无法将其更改回来。

我们为我们的俱乐部购买了一个漂亮的 RTF Generator 来从我们的 PHP 远足列表中生成一个 Word 文档。这是我发现折旧错误的地方。只是说,有一天您可能需要从 PHP 创建的 Word 文档。很难找到这种东西,而且它在过去 9 年里一直运作良好。

“+”令人困惑,因为双引号和加号让我认为它是函数的一部分,而不是输入。

$perms = ereg_replace(" +", "&", @trim($tmp[0]));

answer: preg_replace("/ +/", "&", @trim($tmp[0]));

这个让我对 "what function? there is no function!" 摸不着头脑,直到我发现 this almost obscure example and picked the middle solution:

preg_replace():不推荐使用 /e 修饰符,改用 preg_replace_callback:

$string = preg_replace("/&#([0-9]+)/e","chr('\1')",$string);

$string = preg_replace_callback("/&#([0-9]+)/", create_function ('$matches', 'return chr($matches[1]);'),$string);

我发现 This link with comparsions between Depreciated and Replacement 非常有用。