在phpFiddle.org上正常运行的代码在Web服务器上崩溃

时间:2015-09-04 18:27:55

标签: php error-handling compiler-errors syntax-error

我有一个代码,它可以在phpFiddle.org上正常运行,但是当我试图在我的网络服务器上运行它时,它出于某种原因显示内部网络错误。我想知道我做错了什么。感谢。

    $text = "cheese\'s bacon cats ";
    $replacement = ["cheese\'s" => "bacon", "bacon" => "apple", "cats" => "dogs"];
    $search = array_map(function($v){
        return preg_quote($v, "/");
    }, array_keys($replacement));

    echo $text = preg_replace_callback("/\b(" . implode("|", $search) . ")\b/", function($m)use($replacement){
        return $replacement[$m[1]];
    }, $text);

P.S:我的网络服务器是ipage.com

以下是代码的编辑版本:

$text = "apple\'s bacon cats ";
    $replacement = array("apple\'s" => "bacon", "bacon" => "apple", "cats" => "dogs");
    $search = array_map(function($v){
        return preg_quote($v, "/");
    }, array_keys($replacement));

    echo $text = preg_replace_callback("/\b(" . implode("|", $search) . ")\b/", function($m)use($replacement){
        return $replacement[$m[1]];
    }, $text);

2 个答案:

答案 0 :(得分:3)

iPage PHP version is currently 5.3。您使用的数组表示法[]仅为supported as of PHP 5.4。将所有数组代码切换到array(),你应该没问题。在使用ipage等托管服务时,检查本地开发环境版本与服务器之间的一致性非常重要。

答案 1 :(得分:2)

除了samrap的笔记,你应该使用 https://3v4l.org/ 而不是phpfiddle。 3v4l功能更丰富,它将向您展示几种不同php版本的代码结果,而不是假设您正在运行phpfiddle正在使用的任何版本的PHP。此外,3v4l将显示性能统计等。