<?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