Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pass a PHP string to a JavaScript variable (and escape newlines) [duplicate]

What is the easiest way to encode a PHP string for output to a JavaScript variable?

I have a PHP string which includes quotes and newlines. I need the contents of this string to be put into a JavaScript variable.

Normally, I would just construct my JavaScript in a PHP file, à la:

<script>   var myvar = "<?php echo $myVarValue;?>"; </script> 

However, this doesn't work when $myVarValue contains quotes or newlines.

like image 936
David Laing Avatar asked Oct 03 '08 18:10

David Laing


1 Answers

Expanding on someone else's answer:

<script>   var myvar = <?php echo json_encode($myVarValue); ?>; </script> 

Using json_encode() requires:

  • PHP 5.2.0 or greater
  • $myVarValue encoded as UTF-8 (or US-ASCII, of course)

Since UTF-8 supports full Unicode, it should be safe to convert on the fly.

Note that because json_encode escapes forward slashes, even a string that contains </script> will be escaped safely for printing with a script block.

like image 172
bobwienholt Avatar answered Sep 22 '22 09:09

bobwienholt