Я работал над очень большой, сложной структурой, которую я пишу. Я использовал процесс, аналогичный этому, для двух других пакетов, и он работал безупречно, однако это 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
заменить только часть строки, которую я указал, новым значением?
Задача ещё не решена.
Других решений пока нет …