0

我有以下代码

$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 请求运行它就不起作用 Oo

我还必须注意,如果我从下划线之间的内部删除任何斜线,则会发生替换。所以问题一定出在那些斜线上。

前任。

$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
)
4

2 回答 2

1

使用str_replace()而不是preg_replace(),因为您没有进行任何模式匹配。

于 2013-07-10T19:59:38.493 回答
0

我建议不要将 JSON 作为字符串使用,而是使用它所代表的实际数据结构。您可以反序列化 JSON 并像这样替换数组元素:

$test_array = json_decode($text);
$test_array[0] = $text_to_replace;
$new_json = json_encode($test_array);
于 2013-07-10T19:34:41.800 回答