-
Notifications
You must be signed in to change notification settings - Fork 762
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PHP 8.3] Added json_validate function description. #2906
Merged
+160
−0
Merged
Changes from 3 commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<!-- $Revision$ --> | ||
<refentry xml:id="function.json-validate" xmlns="http://docbook.org/ns/docbook"> | ||
<refnamediv> | ||
<refname>json_validate</refname> | ||
<refpurpose>Checks if a string contains valid JSON</refpurpose> | ||
</refnamediv> | ||
|
||
<refsect1 role="description"> | ||
&reftitle.description; | ||
<methodsynopsis> | ||
<type>bool</type><methodname>json_validate</methodname> | ||
<methodparam><type>string</type><parameter>json</parameter></methodparam> | ||
<methodparam><type>int</type><parameter>depth</parameter><initializer>512</initializer></methodparam> | ||
<methodparam><type>int</type><parameter>flags</parameter><initializer>0</initializer></methodparam> | ||
</methodsynopsis> | ||
<para> | ||
Returns whether the given &string; is syntactically valid JSON. | ||
If <function>json_validate</function> returns &true;, <function>json_decode</function> | ||
will successfully decode the given string when using the same | ||
<parameter>depth</parameter> and <parameter>flags</parameter>. | ||
</para> | ||
<para> | ||
If <function>json_validate</function> returns &false;, the cause | ||
can be retrieved using <function>json_last_error</function> and | ||
<function>json_last_error_msg</function>. | ||
</para> | ||
<para> | ||
<function>json_validate</function> uses less memory than | ||
<function>json_decode</function> if the decoded JSON payload is | ||
not used, because it does not need to build the array or | ||
object structure containing the payload. | ||
</para> | ||
<caution> | ||
<para> | ||
Calling <function>json_validate</function> immediately before | ||
<function>json_decode</function> will unnecessarily parse the string | ||
twice, as <function>json_decode</function> implicitly performs | ||
validation during decoding. | ||
</para> | ||
<para> | ||
<function>json_validate</function> should therefore only be used | ||
if the decode JSON payload is not immediately used and knowing whether | ||
the string contains valid JSON is needed. | ||
</para> | ||
</caution> | ||
</refsect1> | ||
|
||
<refsect1 role="parameters"> | ||
&reftitle.parameters; | ||
<para> | ||
<variablelist> | ||
<varlistentry> | ||
<term><parameter>json</parameter></term> | ||
<listitem> | ||
<para> | ||
The string to validate. | ||
</para> | ||
<para> | ||
This function only works with UTF-8 encoded strings. | ||
</para> | ||
&json.implementation.superset; | ||
</listitem> | ||
</varlistentry> | ||
<varlistentry> | ||
<term><parameter>depth</parameter></term> | ||
<listitem> | ||
<para> | ||
Maximum nesting depth of the structure being decoded. | ||
The value must be greater than <literal>0</literal>, | ||
and less than or equal to <literal>2147483647</literal>. | ||
</para> | ||
</listitem> | ||
</varlistentry> | ||
<varlistentry> | ||
<term><parameter>flags</parameter></term> | ||
<listitem> | ||
<para> | ||
Bitmask of | ||
<constant>JSON_INVALID_UTF8_IGNORE</constant>. | ||
The behaviour of these constants is described on the | ||
<link linkend="json.constants">JSON constants</link> page. | ||
</para> | ||
</listitem> | ||
</varlistentry> | ||
</variablelist> | ||
</para> | ||
</refsect1> | ||
|
||
<refsect1 role="returnvalues"> | ||
&reftitle.returnvalues; | ||
<para> | ||
Returns &true; if the given string is syntactically valid JSON, otherwise | ||
returns &false;. | ||
</para> | ||
</refsect1> | ||
|
||
<refsect1 role="errors"> | ||
&reftitle.errors; | ||
<para> | ||
If <parameter>depth</parameter> is outside the allowed range, | ||
a <classname>ValueError</classname> is thrown. | ||
</para> | ||
</refsect1> | ||
|
||
<refsect1 role="examples"> | ||
&reftitle.examples; | ||
<para> | ||
<example> | ||
<title><function>json_validate</function> examples</title> | ||
<programlisting role="php"> | ||
<![CDATA[ | ||
<?php | ||
var_dump(json_validate('{ "test": { "foo": "bar" } }')); | ||
var_dump(json_validate('{ "": "": "" } }')); | ||
?> | ||
]]> | ||
</programlisting> | ||
&example.outputs; | ||
<screen> | ||
<![CDATA[ | ||
bool(true) | ||
bool(false) | ||
]]> | ||
</screen> | ||
</example> | ||
</para> | ||
</refsect1> | ||
|
||
<refsect1 role="seealso"> | ||
&reftitle.seealso; | ||
<para> | ||
<simplelist> | ||
<member><function>json_decode</function></member> | ||
<member><function>json_last_error</function></member> | ||
<member><function>json_last_error_msg</function></member> | ||
</simplelist> | ||
</para> | ||
</refsect1> | ||
</refentry> | ||
<!-- Keep this comment at the end of the file | ||
Local variables: | ||
mode: sgml | ||
sgml-omittag:t | ||
sgml-shorttag:t | ||
sgml-minimize-attributes:nil | ||
sgml-always-quote-attributes:t | ||
sgml-indent-step:1 | ||
sgml-indent-data:t | ||
indent-tabs-mode:nil | ||
sgml-parent-document:nil | ||
sgml-default-dtd-file:"~/.phpdoc/manual.ced" | ||
sgml-exposed-tags:nil | ||
sgml-local-catalogs:nil | ||
sgml-local-ecat-files:nil | ||
End: | ||
vim600: syn=xml fen fdm=syntax fdl=2 si | ||
vim: et tw=78 syn=sgml | ||
vi: ts=1 sw=1 | ||
--> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is confusing?
Should be a bitmask of
JSON_*
constatns no?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems that json_validate accepts
PHP_JSON_INVALID_UTF8_IGNORE
only.https://github.com/php/php-src/blob/ea299d44a155e0ef39c24a4d79b0e51accf8d9d0/ext/json/json.c#L329-L332
We should change as the following?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I think this makes more sense. :)