الفرق بين المراجعتين ل"PHP/json last error"
< PHP
اذهب إلى التنقل
اذهب إلى البحث
Kinan-mawed (نقاش | مساهمات) |
ط (إضافة تصنيفات) |
||
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين) | |||
سطر 13: | سطر 13: | ||
== القيم المعادة == | == القيم المعادة == | ||
− | تُعيد عدد صحيح. يُمكن للقيمة أن تكون أحد الثوابت | + | تُعيد عدد صحيح. يُمكن للقيمة أن تكون أحد الثوابت الموجودة في الجدول الآتي، الذي يعرض رموز أخطاء JSON: |
− | |||
− | رموز أخطاء JSON | ||
{| class="wikitable" | {| class="wikitable" | ||
− | + | !الثابت | |
− | + | !المعنى | |
− | + | !التوافر | |
|- | |- | ||
|<code>JSON_ERROR_NONE</code> | |<code>JSON_ERROR_NONE</code> | ||
سطر 50: | سطر 48: | ||
|- | |- | ||
|<code>JSON_ERROR_INF_OR_NAN</code> | |<code>JSON_ERROR_INF_OR_NAN</code> | ||
− | |القيمة التي ستُرمَّز تحوي على INF (لا نهاية) أو القيمة | + | |القيمة التي ستُرمَّز تحوي على <code>INF</code> (لا نهاية) أو القيمة <code>NAN</code> (وهي قيمةٌ لا تُمثِّل عددًا وهي اختصارٌ للعبارة Not-A-Number). |
|PHP 5.5.0 | |PHP 5.5.0 | ||
|- | |- | ||
سطر 65: | سطر 63: | ||
|PHP 7.0.0 | |PHP 7.0.0 | ||
|} | |} | ||
+ | |||
+ | == أمثلة == | ||
+ | المثال 1: مثال على الدالة <code>json_last_error()</code><syntaxhighlight lang="php"> | ||
+ | <?php | ||
+ | // سلسلة نصّيّة صالحة بصيغة JSON | ||
+ | $json[] = '{"Organization": "Hsoub"}'; | ||
+ | |||
+ | // خطأ صياغة، استخدمنا في هذه الحالة ' بدلًا من " في السلسلة النصية | ||
+ | $json[] = "{'Organization': 'Hsoub'}"; | ||
+ | |||
+ | |||
+ | foreach ($json as $string) { | ||
+ | echo 'Decoding: ' . $string; | ||
+ | json_decode($string); | ||
+ | |||
+ | switch (json_last_error()) { | ||
+ | case JSON_ERROR_NONE: | ||
+ | echo ' - No errors'; | ||
+ | break; | ||
+ | case JSON_ERROR_DEPTH: | ||
+ | echo ' - Maximum stack depth exceeded'; | ||
+ | break; | ||
+ | case JSON_ERROR_STATE_MISMATCH: | ||
+ | echo ' - Underflow or the modes mismatch'; | ||
+ | break; | ||
+ | case JSON_ERROR_CTRL_CHAR: | ||
+ | echo ' - Unexpected control character found'; | ||
+ | break; | ||
+ | case JSON_ERROR_SYNTAX: | ||
+ | echo ' - Syntax error, malformed JSON'; | ||
+ | break; | ||
+ | case JSON_ERROR_UTF8: | ||
+ | echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; | ||
+ | break; | ||
+ | default: | ||
+ | echo ' - Unknown error'; | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | echo PHP_EOL; | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | </syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text"> | ||
+ | Decoding: {"Organization": "Hsoub"} - No errors | ||
+ | Decoding: {'Organization': 'Hsoub'} - Syntax error, malformed JSON | ||
+ | </syntaxhighlight>المثال 2: استخدام الدالة <code>json_last_error()</code> مع الدالة <code>[[PHP/json encode|json_encode()]]</code><syntaxhighlight lang="php"> | ||
+ | <?php | ||
+ | // تسلسل غير صالح بترميز UTF-8 | ||
+ | $text = "\xB1\x31"; | ||
+ | |||
+ | $json = json_encode($text); | ||
+ | $error = json_last_error(); | ||
+ | |||
+ | var_dump($json, $error === JSON_ERROR_UTF8); | ||
+ | ?> | ||
+ | |||
+ | </syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text"> | ||
+ | string(4) "null" | ||
+ | bool(true) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == انظر أيضًا == | ||
+ | * الدالة <code>[[PHP/json last error msg|json_last_error_msg()]]</code>: إعادة الخطأ النّاتج عن آخر استدعاء للدالة [[PHP/json encode|<code>json_encode()</code>]] أو [[PHP/json decode|<code>json_decode()</code>]] على شكل سلسلة نصّيّة. | ||
+ | * الدالة <code>[[PHP/json decode|json_decode()]]</code>: فك ترميز سلسلة JSON. | ||
+ | * الدالة <code>[[PHP/json encode|json_encode()]]</code>: إعادة قيمة ما على شكل صيغة JSON. | ||
+ | |||
+ | == مصادر == | ||
+ | * [http://php.net/manual/en/function.json-last-error.php صفحة الدالة json_last_error في توثيق PHP الرسمي]. | ||
+ | [[تصنيف:PHP]] | ||
+ | [[تصنيف:PHP Function]] | ||
+ | [[تصنيف:PHP JSON]] |
المراجعة الحالية بتاريخ 03:16، 10 أبريل 2018
(PHP 5 >= 5.3.0, PHP 7)
تُعيد الدالة json_last_error()
آخر خطأ حاصل.
الوصف
int json_last_error ( void )
تُعيد آخر خطأ حاصل (إن كان هنالك خطأ) خلال آخر عمليّة ترميز أو فك ترميز لصيغة JSON.
المعاملات
لا تملك هذه الدالة أي مُعامِلات.
القيم المعادة
تُعيد عدد صحيح. يُمكن للقيمة أن تكون أحد الثوابت الموجودة في الجدول الآتي، الذي يعرض رموز أخطاء JSON:
الثابت | المعنى | التوافر |
---|---|---|
JSON_ERROR_NONE
|
لم يحصل أي خطأ. | |
JSON_ERROR_DEPTH
|
تم تجاوز القيمة القصوى للعمق. | |
JSON_ERROR_STATE_MISMATCH
|
صيغة JSON غير صالحة. | |
JSON_ERROR_CTRL_CHAR
|
خطأ محرف التّحكّم، غالبًا ترميز غير صحيح. | |
JSON_ERROR_SYNTAX
|
خطأ في الصّياغة. | |
JSON_ERROR_UTF8
|
أحرف ترميز UTF-8 مُشوّهة، مُرمَّزة غالبًا بشكل غير صحيح. | PHP 5.3.3 |
JSON_ERROR_RECURSION
|
وجود مَرجِع تكراري (recursive reference) أو أكثر في القيمة التي ستُرمَّز. | PHP 5.5.0 |
JSON_ERROR_INF_OR_NAN
|
القيمة التي ستُرمَّز تحوي على INF (لا نهاية) أو القيمة NAN (وهي قيمةٌ لا تُمثِّل عددًا وهي اختصارٌ للعبارة Not-A-Number).
|
PHP 5.5.0 |
JSON_ERROR_UNSUPPORTED_TYPE
|
أُدخِلت قيمة من نوع لا يُمكِن ترميزه. | PHP 5.5.0 |
JSON_ERROR_INVALID_PROPERTY_NAME
|
أُدخِل اسم خاصّيّة لا يُمكِن ترميزه. | PHP 7.0.0 |
JSON_ERROR_UTF16
|
أحرف ترميز UTF-16 مُشوّهة، مُرمَّزة غالبًا بشكل غير صحيح. | PHP 7.0.0 |
أمثلة
المثال 1: مثال على الدالة json_last_error()
<?php
// سلسلة نصّيّة صالحة بصيغة JSON
$json[] = '{"Organization": "Hsoub"}';
// خطأ صياغة، استخدمنا في هذه الحالة ' بدلًا من " في السلسلة النصية
$json[] = "{'Organization': 'Hsoub'}";
foreach ($json as $string) {
echo 'Decoding: ' . $string;
json_decode($string);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
echo PHP_EOL;
}
?>
ينتج عن المثال السّابق ما يلي:
Decoding: {"Organization": "Hsoub"} - No errors
Decoding: {'Organization': 'Hsoub'} - Syntax error, malformed JSON
المثال 2: استخدام الدالة json_last_error()
مع الدالة json_encode()
<?php
// تسلسل غير صالح بترميز UTF-8
$text = "\xB1\x31";
$json = json_encode($text);
$error = json_last_error();
var_dump($json, $error === JSON_ERROR_UTF8);
?>
ينتج عن المثال السّابق ما يلي:
string(4) "null"
bool(true)
انظر أيضًا
- الدالة
json_last_error_msg()
: إعادة الخطأ النّاتج عن آخر استدعاء للدالةjson_encode()
أوjson_decode()
على شكل سلسلة نصّيّة. - الدالة
json_decode()
: فك ترميز سلسلة JSON. - الدالة
json_encode()
: إعادة قيمة ما على شكل صيغة JSON.