str_replace double and single quotes
15,281
Solution 1
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.
Solution 2
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
Solution 3
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.
Comments
-
symlink almost 2 years
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