mirror of
https://github.com/danielstjules/Stringy.git
synced 2025-08-12 00:04:11 +02:00
isJson() function, with tests
This commit is contained in:
14
README.md
14
README.md
@@ -23,6 +23,7 @@ A PHP library with a variety of string manipulation functions with multibyte sup
|
||||
* [isAlpha](#isalpha)
|
||||
* [isAlphanumeric](#isalphanumeric)
|
||||
* [isBlank](#isblank)
|
||||
* [isJson](#isjson)
|
||||
* [isHexadecimal](#ishexadecimal)
|
||||
* [isLowerCase](#islowercase)
|
||||
* [isUpperCase](#isuppercase)
|
||||
@@ -338,6 +339,19 @@ S::create("\n\t \v\f")->isBlank();
|
||||
S::isBlank("\n\t \v\f"); // true
|
||||
```
|
||||
|
||||
#### isJson
|
||||
|
||||
$stringy->isJson()
|
||||
|
||||
S::isJson(string $str [, string $encoding ])
|
||||
|
||||
Returns true if the string is JSON, false otherwise.
|
||||
|
||||
```php
|
||||
S::create('{"foo":"bar"}')->isJson();
|
||||
S::isJson('{"foo":"bar"}'); // true
|
||||
```
|
||||
|
||||
#### isHexadecimal
|
||||
|
||||
$stringy->isHexadecimal()
|
||||
|
@@ -624,6 +624,18 @@ class StaticStringy
|
||||
return Stringy::create($str, $encoding)->isBlank();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the string is JSON, false otherwise.
|
||||
*
|
||||
* @param string $str String to check
|
||||
* @param string $encoding The character encoding
|
||||
* @return bool Whether or not $str is JSON
|
||||
*/
|
||||
public static function isJson($str, $encoding = null)
|
||||
{
|
||||
return Stringy::create($str, $encoding)->isJson();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the string contains only lower case chars, false otherwise.
|
||||
*
|
||||
|
@@ -994,6 +994,19 @@ class Stringy
|
||||
return $this->matchesPattern('^([[:space:]])*$');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the string is JSON, false otherwise.
|
||||
*
|
||||
* @return bool Whether or not $str is JSON
|
||||
*/
|
||||
public function isJson()
|
||||
{
|
||||
json_decode($this->str);
|
||||
|
||||
return json_last_error() == JSON_ERROR_NONE && $this->matchesPattern("^\W*[\[{].+$");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if the string contains only lower case chars, false otherwise.
|
||||
*
|
||||
|
@@ -766,6 +766,33 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
|
||||
return $testData;
|
||||
}
|
||||
|
||||
public function stringsForIsJson()
|
||||
{
|
||||
$testData = array(
|
||||
array(false, ''),
|
||||
array(false, '123'),
|
||||
array(true, '{"foo": "bar"}'),
|
||||
array(false, '{"foo":"bar",}'),
|
||||
array(false, '{"foo"}'),
|
||||
array(false, '["foo": "bar"]'),
|
||||
array(true, '["foo"]'),
|
||||
array(false, '{"foo"}'),
|
||||
array(false, '{"foo": "bar"]'),
|
||||
array(true, ' { "foo" : "bar" } '),
|
||||
array(false, '123', 'UTF-8'),
|
||||
array(true, '{"foo": "bar"}', 'UTF-8'),
|
||||
array(false, '{"foo":"bar",}', 'UTF-8'),
|
||||
array(false, '{"foo"}', 'UTF-8'),
|
||||
array(false, '["foo": "bar"]', 'UTF-8'),
|
||||
array(true, '["foo"]', 'UTF-8'),
|
||||
array(false, '{"foo"}', 'UTF-8'),
|
||||
array(false, '{"foo": "bar"]', 'UTF-8'),
|
||||
array(true, ' { "foo" : "bar" } ', 'UTF-8'),
|
||||
);
|
||||
|
||||
return $testData;
|
||||
}
|
||||
|
||||
public function stringsForIsLowerCase()
|
||||
{
|
||||
$testData = array(
|
||||
|
@@ -462,6 +462,16 @@ class StaticStringyTestCase extends CommonTest
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider stringsForIsJson
|
||||
*/
|
||||
public function testIsJson($expected, $str, $encoding = null)
|
||||
{
|
||||
$result = S::isJson($str, $encoding);
|
||||
$this->assertInternalType('boolean', $result);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider stringsForIsLowerCase
|
||||
*/
|
||||
|
@@ -538,6 +538,18 @@ class StringyTestCase extends CommonTest
|
||||
$this->assertEquals($str, $stringy);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider stringsForIsJson
|
||||
*/
|
||||
public function testIsJson($expected, $str, $encoding = null)
|
||||
{
|
||||
$stringy = S::create($str, $encoding);
|
||||
$result = $stringy->isJson();
|
||||
$this->assertInternalType('boolean', $result);
|
||||
$this->assertEquals($expected, $result);
|
||||
$this->assertEquals($str, $stringy);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider stringsForIsLowerCase
|
||||
*/
|
||||
|
Reference in New Issue
Block a user