str_replace双引号和单引号

I have a simple PHP script that should escape both single and double quotes with a backslash. Here is my code:

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

Problem is, it only escapes the double quote, so a string like

"This" is a 'string'

parses out to be

\"This\" is a 'string'

not

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

If I change the second line to

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

I get

\"This\" is a asdfstringasdf

Any ideas what is going wrong?

Thanks

Problem solved. I was viewing the output in my browser's console, which for some reason was showing the backslash for double quotes, but not singles. View source showed that it was working properly.

Try this:

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

The problem is that ' inside a string, should be noted as \' , as it is an escape character. The backslash \ is a double \ as well inside a string.

Let me know if this works.

I didn't have a problem with your code, my test is below:

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

Edited

Irrelevant now, OP figured it out :D