3v4l.org

run code in 300+ PHP versions simultaneously
<?php $source = json_encode([new StdClass, "This is a test", "Foo's bar", 1, 5]); function escapeForJs($string) { $len = mb_strlen($string, 'utf8'); $array = []; for ($i = 0; $i < $len; $i++) { $array[] = mb_substr($string, $i, 1, 'utf8'); } return implode("", array_map(function($char) { if (ctype_alnum($char)) { return $char; } $bytelen = mb_strlen($char, '8bit'); if ($bytelen === 1) { return '\\x' . str_pad(dechex(ord($char)), 2, '0', STR_PAD_LEFT); } $result = '\\u'; for ($i = 0; $i < $bytelen; $i++) { $result .= str_pad(dechex(ord($char[$i])), 2, '0', STR_PAD_LEFT); } return $result; }, $array)); } var_dump(escapeForJs($source));

preferences:
51.64 ms | 402 KiB | 5 Q