How to pass php variable containing quote to JS function

Discussion in 'PHP' started by blogfisher, Jan 20, 2009.

  1. #1
    Hi,
    In my PHP program i am accepting input from users. I am passing it to javascript function for further process. My function didn work if input string contains quote character. For example

    <? php
    $myvar = "Hello's";
    echo '<FORM NAME="myform" ACTION="" METHOD="GET"> Enter something in the box: <BR>
    <INPUT TYPE="text" NAME="inputbox" VALUE=""><P>';
    echo "<INPUT TYPE=\"button\" NAME=\"button1\" Value=\"Read\" onClick=\"javascript:readText(this.form, \"$myvar\")\">";
    //<INPUT TYPE="button" NAME="button2" Value="Write" onClick="javascript:writeText(this.form)">
    echo '</FORM>';
    ?>
    Code (markup):
    and

    javascript is as below:

    function readText (form, data) {
        TestVar =form.inputbox.value;
        alert ("You typed: " + TestVar + "... and ..." + data);
    }
    
    Code (markup):
    However this is not working because of quote character in $myvar. Any idea to overcome this ???

    Quick solution will be appreciated...

    Thx in advance!!
     
    blogfisher, Jan 20, 2009 IP
  2. pqdrummer

    pqdrummer Peon

    Messages:
    297
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    0
    #2
    First, I suggest that you look into using a templating language like Smarty to keep your PHP out of your HTML. Keep the two separate if at all possible. Not only that, but Smarty allows you to do some really awesome things.

    That being said, try this:

    <html>
    <head>
    <script language="javascript">
    function readText (form, data) {
        TestVar =form.inputbox.value;
        alert ("You typed: " + TestVar + "... and ..." + data);
    }
    </script>
    </head>
    <?php
    $myvar = "Hello\'s";
    echo '<FORM NAME="myform" ACTION="" METHOD="GET"> Enter something in the box: <BR>
    <INPUT TYPE="text" NAME="inputbox" VALUE=""><P>';
    echo "<INPUT TYPE='button' NAME='button1' Value='Read' onClick=\"readText(this.form, '$myvar')\"/>";
    //<INPUT TYPE="button" NAME="button2" Value="Write" onClick="javascript:writeText(this.form)">
    echo '</FORM>';
    ?>
    </html>
    Code (markup):
     
    pqdrummer, Jan 20, 2009 IP
  3. GreatMetro

    GreatMetro Peon

    Messages:
    117
    Likes Received:
    3
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Try the PHP function addslashes()

    http://ca3.php.net/addslashes

    It will add backslashes to cancel out single and double quotes.

    ie:

    $var = "Who's there";
    $var = addslahes($var);
    echo $var
    will output:

    Who\'s there
     
    GreatMetro, Jan 20, 2009 IP
  4. ads2help

    ads2help Peon

    Messages:
    2,142
    Likes Received:
    67
    Best Answers:
    1
    Trophy Points:
    0