Very often I need to encode some string in PHP, then pass that to javascript. For example, say I am using PHP to generate some javascript functions. See below:

$s = "some text from somewhere";
$js_code = "
  function do_something(some_text){
    alert(some_text);
  }
  do_something('$s');
";

The above javascript code would work fine until one day you have some symbols in $s, for example the single quote. (There may be more troublemakers, but at least this is a common one).

So now you start thinking about encoding and decoding. It turns out there are so many ways to do them… Just which one do you need?

Below is my solution, you are welcome and encouraged to find your own solution.

$s = "some text !@#$%^&*()_+[]{}|;':",./?";  // of couse this is not syntactical, in reality think of this string coming from a db
$s_encoded = rawurlencode($s);
$js_code = "
  function do_something(some_text_encoded){
    some_text = unescape(some_text_encoded);
    alert(some_text);
  }
  do_something('$s_encoded');
";

Hope this can save your time. ;)