我想{
用{{}
和}
替换{}}
,因为,我需要用 来逃避那些{
& 。如果我有输入,我希望我的脚本输出,看到了吗?但它不起作用看看我做了什么}
{}
{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{}}