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.

Share:
15,281
symlink
Author by

symlink

Insert personal information here

Updated on June 04, 2022

Comments

  • symlink
    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