Код, который отлично работает на phpFiddle.org, падает на веб-сервере.

У меня есть код, где он работает нормально на 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);

П.С .: Мой веб-сервер 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

Решение

iPage PHP версия в настоящее время 5.3. Обозначение массива, которое вы используете, [] только поддерживается начиная с PHP 5.4. Переключите весь код вашего массива на array() и ты должен быть в порядке. При использовании услуг хостинга, таких как ipage, важно проверять соответствие между версиями локальной среды разработки и сервером.

3

Другие решения

В дополнение к заметкам Самрапа, вы должны использовать https://3v4l.org/ вместо phpfiddle. 3v4l гораздо более функциональный и покажет вам результаты вашего кода в нескольких различных версиях php, вместо того, чтобы предполагать, что вы используете ту версию pf php, которую использует phpfiddle. Кроме того, 3v4l покажет вам статистику производительности и т. Д.

2