1
0
Fork 0

Add detection for unescaped backslashes

pull/33/merge
Jordi Boggiano 2011-11-01 16:02:56 +01:00
parent f5aa3e6c79
commit 066a0db752
2 changed files with 10 additions and 0 deletions

View File

@ -124,6 +124,8 @@ class JsonFile
$charOffset = 0;
if (preg_match('#["}\]]\s*(,)\s*[}\]]#', $json, $match, PREG_OFFSET_CAPTURE)) {
$msg .= ', extra comma';
} elseif (preg_match('#(\\\\(?!["\\/bfnrt]|u[a-f0-9]{4}))#i', $json, $match, PREG_OFFSET_CAPTURE)) {
$msg .= ', unescaped backslash (\\)';
} elseif (preg_match('#(["}\]]) *\r?\n *"#', $json, $match, PREG_OFFSET_CAPTURE)) {
$msg .= ', missing comma';
$charOffset = 1;

View File

@ -34,6 +34,14 @@ class JsonFileTest extends \PHPUnit_Framework_TestCase
$this->expectParseException('extra comma on line 3, char 18', $json);
}
public function testParseErrorDetectUnescapedBackslash()
{
$json = '{
"fo\o": "bar"
}';
$this->expectParseException('unescaped backslash (\\) on line 2, char 12', $json);
}
public function testParseErrorDetectSingleQuotes()
{
$json = '{