PHP str_replace не заменяет всю строку?

Я работал над очень большой, сложной структурой, которую я пишу. Я использовал процесс, аналогичный этому, для двух других пакетов, и он работал безупречно, однако это str_replace доставляет мне неприятности

Это небольшой фрагмент гораздо большей функции. Функция, из которой взят этот конкретный фрагмент, заменяет значение по умолчанию в файле конфигурации на значение, зависящее от пользовательского ввода. Я не собираюсь включать все другие различные замены строк, которые происходят в этой функции, а также не буду подробно описывать сценарий, который захватывает содержимое файла конфигурации и записывает его. Проблема изолирована от этого фрагмента. Я знаю это, потому что этот фрагмент повторяет проблему в более крупной функции, когда он изолирован в тестовом файле.

Эквивалентный код...

<?php
$new_table_array = '$ecom_tables = [
          "product" => "test1",
          "promo" => "test2",
          "records" => "test3"
        ];';
$test = str_replace("$ecom_tables = [];", $new_table_array, '
  $ecom_tables = [];
');
?>

Этот фрагмент отформатирован идентично реальной функции. Результатом этого фрагмента в функции и в файле теста является...

  $ecom_tables$ecom_tables = [
          "product" => "test1",
          "promo" => "test2",
          "records" => "test3"
        ];

Я просмотрел свои конкатенации и убедился, что все мои строковые цитаты находятся в правильном месте. Он проходит проверку синтаксиса, а также запускается, когда я загружаю тестовую страницу, однако результат всегда является неожиданным.

Почему str_replace заменить только часть строки, которую я указал, новым значением?

0 ответов

Другие вопросы по тегам