الفرق بين المراجعتين لصفحة: «PHP/unpack»
المساهمة في ترجمة الصفحة |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الدالة <code>unpack()</code> في PHP}}</noinclude> | |||
تفك الدالةُ unpack() تحزيم البيانات من سلسلة نصية ثنائية. | تفك الدالةُ unpack() تحزيم البيانات من سلسلة نصية ثنائية. | ||
سطر 131: | سطر 131: | ||
== مصادر == | == مصادر == | ||
* [http://php.net/manual/en/function.unpack.php صفحة الدالة unpack في توثيق PHP الرسمي.] | * [http://php.net/manual/en/function.unpack.php صفحة الدالة unpack في توثيق PHP الرسمي.] | ||
[[تصنيف:PHP]] | |||
[[تصنيف:PHP Function]] | |||
[[تصنيف:PHP Miscellaneous]] |
مراجعة 00:28، 27 مايو 2018
تفك الدالةُ unpack() تحزيم البيانات من سلسلة نصية ثنائية.
الوصف
array unpack ( string $format , string $data [, int $offset = 0 ] )
تفك الدالةُ unpack() البيانات من سلسلة نصية ثنائية في مصفوفة وفقا للمعامل format المعطى.
تُخَزَّنُ البياناتُ مفكوكة التحزيم في مصفوفة ترابطية. لتحقيق ذلك، عليك تسمية شيفرات التنسيق المختلفة وفصلها بشرطة مائلة /. إذا وُجِدَ وسيط مُكرِّر، سيكون لكل من مفاتيح المصفوفة رقمٌ تسلسليٌّ بعد الاسم المعطى.
المعاملات
format
انظر الدالة pack() للحصول على شرح رموز التنسيق.
data
البيانات المُجَمَّعة.
offset
الإزاحة التي يبدأ الفك منها.
القيم المعادة
تعيد الدالةُ unpack() مصفوفة ترابطية تحتوي على عناصر مفكوكة من سلسلة نصية ثنائية.
سجل التغييرات
الإصدار | الوصف |
7.2.0 | يدعم نوعا البيانات float وdouble معًا كلا من Big Endian و Little Endian. |
7.1.0 | أُضِيْفَتْ الإزاحةُ الاختيارية. |
5.5.0 | أُجْرِيَتْ تغييرات لجعل هذه الدالة متوافقة مع Perl:
يحتفظ الرمز "a" الآن بـ NULL بايت زائدة. يحذف رمز "A" الآن كل مسافات ASCII البيضاء الزائدة (المسافات، علامات التبويب، السطور الجديدة، حرف الإعادة و NULL بايت). |
أمثلة
المثال 1: مثال على الدالة unpack()
<?php
$binarydata = "\x04\x00\xa0\x00";
$array = unpack("cchars/nint", $binarydata);
print_r($array);
?>
ناتج المثال السابق:
Array
(
[chars] => 4
[int] => 160
)
المثال 2: مثال على الدالة unpack() مع مُكرِّر
<?php
$binarydata = "\x04\x00\xa0\x00";
$array = unpack("c2chars/nint", $binarydata);
print_r($array);
?>
ناتج المثال السابق:
Array
(
[chars1] => 4
[chars2] => 0
[int] => 40960
)
ملاحظات
تحذير: لاحظ أن PHP تخزن داخليًا القيم الصحيحة على أنها مؤشرة. إذا فككتَ بيانات ضخمةً من نوع البيانات long غير المُؤشر وكانت بنفس حجم قيم PHP المخزنة داخليًا، فستكون النتيجة رقمًا سالبًا حتى لو حُدِّدَنا أنَ عملية فَكٌّ التحزيم ستكون غير مؤشَّرة.
تحذير: إذا لم تُسَمِّ عنصرًا، فستُستخدَم المؤشرات الرقمية التي تبدأ من 1. اعْلَم أنه إذا كان لديك أكثر من عنصر واحد غير مسمى فسَتُسْتَبْدَلُ بعضُ البيانات لأنَّ الترقيم يعاد بداية من 1 لكل عنصر.
المثال 3: مثال على الدالة unpack() مع مفاتيح غير مسماة
<?php
$binarydata = "\x32\x42\x00\xa0";
$array = unpack("c2/n", $binarydata);
var_dump($array);
?>
ناتج المثال السابق:
array(2) {
[1]=>
int(160)
[2]=>
int(66)
}
لاحظ أنه يُكتب فوق القيمة الأولى من محدد c بواسطة القيمة الأولى من محدد n.
انظر أيضًا
- الدالة pack(): تحزيم البيانات في سلسلة نصية ثنائية.