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