2

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

$output = str_replace('"','\"',$input);
$output = str_replace("'","\'",$output);
return $output;

问题是,它只转义双引号,所以像这样的字符串

"This" is a 'string'

解析为

\"This\" is a 'string'

不是

\"This\" is a \'string\'

如果我将第二行更改为

$output = str_replace("'","asdf",$output);

我明白了

\"This\" is a asdfstringasdf

任何想法出了什么问题?

谢谢

4

3 回答 3

3

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

<?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\'

已编辑

现在无关紧要,OP想通了:D

于 2013-08-22T17:34:51.210 回答
1

尝试这个:

$output = str_replace("\"","\\\"",$input);
$output = str_replace("\'","\\\'",$output);
return $output;

问题是 ' 在字符串中,应该记为 \' ,因为它是一个转义字符。反斜杠 \ 在字符串中也是双 \。

让我知道这个是否奏效。

于 2013-08-22T17:29:20.097 回答
0

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

于 2013-08-22T17:46:00.687 回答