我一直在研究一个非常庞大,复杂的框架。我已经使用了与其他两个包类似的过程,并且它完美无缺,但是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
只用新值替换我指定的部分字符串?