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
заменить только часть строки, которую я указал, новым значением?