preg_replace不替换为ajax

时间:2013-07-10 19:29:58

标签: php ajax regex

我有以下代码

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

2 个答案:

答案 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);