我有以下代码
$text = '["{!Account__!http://localhost/MF/Public/__NotActivated}","email"]';
$replcmnt = array(
'#{!Account__!http:\/\/localhost\/MF/Public\/__NotActivated}#' => 'text to replace'
);
$text = preg_replace(array_keys($replcmnt),$replcmnt,$text);
我需要输出为'["text to replace","email"]'
但由于某种原因,替换不会替换。我发现这非常奇怪,因为这在我加载页面时起作用,但如果我通过ajax请求运行它就无法工作O.o
我还必须注意,如果我从下划线之间的内部部分移除任何斜线,则会发生替换。所以问题必须是那些斜杠。
离。
$replcmnt = array(
'#{!Account__!http:-localhost-MF-Public-__NotActivated}#' => 'text to replace'
);
我想,由于没有斜线,上面的内容会被取代。
非常感谢任何帮助
编辑:
以下是替换之前的数据:
$text
["{!Account__!http:\/\/localhost\/MF\/Public\/__NotActivated}","email"]
$replcmnt
Array
(
[#{!Account__!http:\/\/localhost\/MF\/Public\/__NotActivated}#] => some long text
)
答案 0 :(得分:1)
使用str_replace()
而不是preg_replace()
,因为您没有进行任何模式匹配。
答案 1 :(得分:0)
我建议不要将JSON用作字符串,而是使用它代表的实际数据结构。您可以反序列化JSON,只需像这样替换数组元素:
$test_array = json_decode($text);
$test_array[0] = $text_to_replace;
$new_json = json_encode($test_array);