- var_dump: documentation ( source)
- strcasecmp: documentation ( source)
- preg_match: documentation ( source)
<?php
function parse_literal($str) {
$str = (string)$str;
if (((string)(int)$str) === $str) {
return (int)$str;
} else if (((string)(float)$str) === $str) {
return (float)$str;
} else if (0 === strcasecmp($str, 'true')) {
return true;
} else if (0 === strcasecmp($str, 'false')) {
return false;
} else if (0 === strcasecmp($str, 'null')) {
return false;
} else if (preg_match('<^"((?:[^"\\\\]|\\\\.)*)"|\'((?:[^\'\\\\]|\\\\.)*)\'$>', $str)) {
return eval('return ' . $str . ';');
}
}
var_dump(parse_literal('12'));
var_dump(parse_literal('12.34'));
var_dump(parse_literal('true'));
var_dump(parse_literal('false'));
var_dump(parse_literal('null'));
var_dump(parse_literal('"hello world"'));
var_dump(parse_literal('"string with \" quote and escape sequences\r\n"'));