Php str_替换双引号和单引号

Php str_替换双引号和单引号,php,escaping,str-replace,Php,Escaping,Str Replace,我有一个简单的PHP脚本,应该用反斜杠转义单引号和双引号。这是我的密码: $output = str_replace('"','\"',$input); $output = str_replace("'","\'",$output); return $output; 问题是,它只会转义双引号,所以 "This" is a 'string' 解析为 \"This\" is a 'string' 不是 如果我把第二行改成 $output = str_replace("'","asdf",$ou

我有一个简单的PHP脚本,应该用反斜杠转义单引号和双引号。这是我的密码:

$output = str_replace('"','\"',$input);
$output = str_replace("'","\'",$output);
return $output;
问题是,它只会转义双引号,所以

"This" is a 'string'
解析为

\"This\" is a 'string'
不是

如果我把第二行改成

$output = str_replace("'","asdf",$output);
我明白了

你知道怎么回事吗

谢谢

试试这个:

$output = str_replace("\"","\\\"",$input);
$output = str_replace("\'","\\\'",$output);
return $output;
问题是“在字符串中,应该记为\”,因为它是一个转义字符。反斜杠\在字符串中也是双精度\字符

让我知道这是否有效。

试试这个:

$output = str_replace("\"","\\\"",$input);
$output = str_replace("\'","\\\'",$output);
return $output;
问题是“在字符串中,应该记为\”,因为它是一个转义字符。反斜杠\在字符串中也是双精度\字符


让我知道这是否有效。

我对您的代码没有问题,我的测试如下:

<?php

    $input = '"This" is a '."'".'String'."'";
    echo $input.'<br />';
    //Echos  "This" is a 'String'

    $output = str_replace('"','\"',$input);
    $output = str_replace("'","\'",$output);
    echo $output;
    //Echos  \"This\" is a \'String\'

我对您的代码没有问题,我的测试如下:

<?php

    $input = '"This" is a '."'".'String'."'";
    echo $input.'<br />';
    //Echos  "This" is a 'String'

    $output = str_replace('"','\"',$input);
    $output = str_replace("'","\'",$output);
    echo $output;
    //Echos  \"This\" is a \'String\'

问题已解决。我在浏览器的控制台中查看输出,出于某种原因,控制台显示双引号的反斜杠,但不显示单引号。查看源代码显示它工作正常。

问题已解决。我在浏览器的控制台中查看输出,出于某种原因,控制台显示双引号的反斜杠,但不显示单引号。查看源代码显示它工作正常。

@symlynk我对你的代码没有问题,你是如何声明你的
$input
?它是一个存储在CMS中的字符串变量。我知道它已经解决了,但你可以使用@symlynk我对你的代码没有问题,你是如何声明你的
$input
?它是一个存储在CMS中的字符串变量。我知道它已经解决了,但是你可以使用它仍然产生相同的结果。双引号被转义,单引号被忽略。你能给我看一下你的输入字符串吗?还有其他str_替换吗?这仍然会产生相同的结果。双引号被转义,单引号被忽略。你能给我看一下你的输入字符串吗?你还有其他的str_替代品吗?太好了!请记住,'和'是转义字符,将来应该这样处理。这将给您带来最少的麻烦。太好了!请记住,'和'是转义字符,将来应该这样处理。那会给你带来最少的麻烦。