我想{用{{}和}替换{}},因为,我需要用 来逃避那些{& 。如果我有输入,我希望我的脚本输出,看到了吗?但它不起作用看看我做了什么}{}{blah}{{}blah{}}
$output = str_replace(array("}", "{"), array("{}}", "{{}"), '{blah}');
但作为输出我得到了这个:{{}blah{{}}}而不是{{}blah{}}
我想{用{{}和}替换{}},因为,我需要用 来逃避那些{& 。如果我有输入,我希望我的脚本输出,看到了吗?但它不起作用看看我做了什么}{}{blah}{{}blah{}}
$output = str_replace(array("}", "{"), array("{}}", "{{}"), '{blah}');
但作为输出我得到了这个:{{}blah{{}}}而不是{{}blah{}}
PHP 为您放入 $search 参数中的每个数组项迭代整个字符串。
它实际上是用你的第一个数组 item替换'{blah}'into ,然后从那个 into因为在第一次替换之后还有另一个。'{blah{}}''{''{{}blah{{}}}''{'
您最好使用正则表达式执行此操作,使用单个 RegExp 模式它只会在您的输入字符串中运行一次。
$str = preg_replace('/(\{|\})/', '{\\1}', '{blah}');
那是因为替换本身包含要搜索的字符串。我会改写它preg_replace_callback:
echo preg_replace_callback('/{|}/', function($match) {
return $match[0] == '{' ? '{{}' : '{}}';
}, '{bla}');
// {{}bla{}}