<?php
function escape_as_double_quoted_literal_matcher ($m) {
$ch = $m[0];
switch ($ch) {
case "\n": return '\n';
case "\r": return '\r';
case "\t": return '\t';
case "\v": return '\v';
case "\e": return '\e';
case "\f": return '\f';
case "\\": return '\\\\';
case "\$": return '\\$';
case "\"": return '\\"';
case "\0": return '\0';
default:
return '\x' . (strlen($h) > 1 ?
$h : '0' . $h); }
}
function escape_as_double_quoted_literal ($val) {
"|[^\x20-\x21\x23\x25-\x5b\x5e-\x7e]|",
"escape_as_double_quoted_literal_matcher",
$val);
}
$text = "\0\1\xff\"hello\\world\"\n\$";
echo escape_as_double_quoted_literal($text);
PD9waHAKCmZ1bmN0aW9uIGVzY2FwZV9hc19kb3VibGVfcXVvdGVkX2xpdGVyYWxfbWF0Y2hlciAoJG0pIHsKCSRjaCA9ICRtWzBdOwoJc3dpdGNoICgkY2gpIHsKCQljYXNlICJcbiI6IHJldHVybiAnXG4nOwoJCWNhc2UgIlxyIjogcmV0dXJuICdccic7CgkJY2FzZSAiXHQiOiByZXR1cm4gJ1x0JzsKCQljYXNlICJcdiI6IHJldHVybiAnXHYnOwoJCWNhc2UgIlxlIjogcmV0dXJuICdcZSc7CgkJY2FzZSAiXGYiOiByZXR1cm4gJ1xmJzsKCQljYXNlICJcXCI6IHJldHVybiAnXFxcXCc7CgkJY2FzZSAiXCQiOiByZXR1cm4gJ1xcJCc7CgkJY2FzZSAiXCIiOiByZXR1cm4gJ1xcIic7CgkJY2FzZSAiXDAiOiByZXR1cm4gJ1wwJzsKCQlkZWZhdWx0OgoJCQkkaCA9IGRlY2hleChvcmQoJGNoKSk7CgkJCXJldHVybiAnXHgnIC4gKHN0cmxlbigkaCkgPiAxID8gJGggOiAnMCcgLiAkaCk7Cgl9Cn0KCmZ1bmN0aW9uIGVzY2FwZV9hc19kb3VibGVfcXVvdGVkX2xpdGVyYWwgKCR2YWwpIHsKCXJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICJ8W15ceDIwLVx4MjFceDIzXHgyNS1ceDViXHg1ZS1ceDdlXXwiLAogICAgICAgICAgICAiZXNjYXBlX2FzX2RvdWJsZV9xdW90ZWRfbGl0ZXJhbF9tYXRjaGVyIiwKICAgICAgICAgICAgJHZhbCk7Cn0KCiR0ZXh0ID0gIlwwXDFceGZmXCJoZWxsb1xcd29ybGRcIlxuXCQiOwplY2hvIGVzY2FwZV9hc19kb3VibGVfcXVvdGVkX2xpdGVyYWwoJHRleHQpOw==