我正在使用下载的 PHP 脚本来加速我的网站的开发,但我收到了一堆与 ereg 相关的“已弃用”消息。我将在上线之前关闭警告,但我会努力确保我首先清除它们!
我找到了一个方便的指南,它适用于简单的部分,例如使用 / 和 /i 更改 preg_replace 的 eregi_replace,但我遇到了一些更高级的表达式(带有注释、连接、变量、大括号等)的问题 -有些是相同的类型,但我很困惑尝试和打破它!)。
当我更新以下内容时,谁能告诉我应该将 / 或 / /i 放在哪里,或者,同样欢迎,告诉我如何处理每种类型(或指向我的说明),以便我自己做?
eregi("<!--\ startBlock\(([^)]+)\)\ -->", $content["body"], $m)
eregi($reg, $content["body"], $m)
eregi("([^\.]+)\.(.*)", $variable, $m) ... I think (?) this is preg_replace("/([^\.]+)\.(.*)/i", $variable, $m)
eregi("{url:([^}]+)}", $txt, $m))
eregi_replace("{".$key."}", $val, $txt)
eregi_replace("{script}", $HTTP_SERVER_VARS["SCRIPT_NAME"], $txt)
eregi_replace("{ifNotSet:".$m[1].":([^}]+)}", "", $txt)
更新:我似乎一切正常(感谢您的帮助),除了下面的一个功能,我无法弄清楚 preg 版本 - 我尝试了各种组合,但生成的页面从未给出与 eregi 版本相同的结果(带有错误行)。有什么建议么?
function parse(&$content) {
while (preg_match("/<!--\ startBlock\(([^)]+)\)\ -->/i", $content["body"], $m)) {
$name = $m[1];
$block = array();
$block["name"] = $name;
$block["blocks"] = array();
$block["used"] = 0;
$block["values"] = array();
$reg = "<!--\ startBlock\(".$name."\)\ -->(.*)<!--\ endBlock\(".$name."\)\ -->";
if (!eregi("$reg", $content["body"], $m)) {
$this->error("block `".$name."' does not have startBlock() AND endBlock().");
}
$block["body"] = $m[1];
$content["body"] = eregi_replace("$reg", "{".$name."}", $content["body"]);
$content["blocks"][$name] = array();
$this->parse(&$block);
$content["blocks"][$name][0] = $block;
}
}
然后我将开始讨论“呼叫时传递参考”,这似乎更棘手!