الفرق بين المراجعتين لصفحة: «PHP/unpack»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) إضافات و تعديلات تنسيقية |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الدالة <code>unpack()</code> في PHP}}</noinclude> | <noinclude>{{DISPLAYTITLE:الدالة <code>unpack()</code> في PHP}}</noinclude> | ||
تفك الدالةُ unpack() تحزيم البيانات من سلسلة نصية ثنائية. | تفك الدالةُ <code>unpack()</code> تحزيم البيانات من سلسلة نصية ثنائية. | ||
== الوصف == | == الوصف == | ||
سطر 7: | سطر 7: | ||
</syntaxhighlight>تفك الدالةُ unpack() البيانات من سلسلة نصية ثنائية في مصفوفة وفقا للمعامل format المعطى. | </syntaxhighlight>تفك الدالةُ <code>unpack()</code> البيانات من سلسلة نصية ثنائية في مصفوفة وفقا للمعامل <code>format</code> المعطى. | ||
تُخَزَّنُ البياناتُ مفكوكة التحزيم في مصفوفة ترابطية. لتحقيق ذلك، عليك تسمية شيفرات التنسيق المختلفة وفصلها بشرطة مائلة /. إذا وُجِدَ وسيط مُكرِّر، سيكون لكل من مفاتيح المصفوفة رقمٌ تسلسليٌّ بعد الاسم المعطى. | تُخَزَّنُ البياناتُ مفكوكة التحزيم في مصفوفة ترابطية. لتحقيق ذلك، عليك تسمية شيفرات التنسيق المختلفة وفصلها بشرطة مائلة /. إذا وُجِدَ وسيط مُكرِّر، سيكون لكل من مفاتيح المصفوفة رقمٌ تسلسليٌّ بعد الاسم المعطى. | ||
سطر 13: | سطر 13: | ||
== المعاملات == | == المعاملات == | ||
=== format === | === <code>format</code> === | ||
انظر الدالة pack() للحصول على شرح رموز التنسيق. | انظر الدالة <code>pack()</code> للحصول على شرح رموز التنسيق. | ||
=== data === | === <code>data</code> === | ||
البيانات المُجَمَّعة. | البيانات المُجَمَّعة. | ||
=== offset === | === <code>offset</code> === | ||
الإزاحة التي يبدأ الفك منها. | الإزاحة التي يبدأ الفك منها. | ||
== القيم المعادة == | == القيم المعادة == | ||
تعيد الدالةُ unpack() مصفوفة ترابطية تحتوي على عناصر مفكوكة من سلسلة نصية ثنائية. | تعيد الدالةُ <code>unpack()</code> مصفوفة ترابطية تحتوي على عناصر مفكوكة من سلسلة نصية ثنائية. | ||
== سجل التغييرات == | == سجل التغييرات == | ||
سطر 31: | سطر 31: | ||
|- | |- | ||
|7.2.0 | |7.2.0 | ||
|يدعم نوعا البيانات float | |يدعم نوعا البيانات <code>float</code> و<code>double</code> معًا كلا من Big Endian و Little Endian. | ||
|- | |- | ||
|7.1.0 | |7.1.0 | ||
سطر 39: | سطر 39: | ||
|أُجْرِيَتْ تغييرات لجعل هذه الدالة متوافقة مع Perl: | |أُجْرِيَتْ تغييرات لجعل هذه الدالة متوافقة مع Perl: | ||
يحتفظ الرمز "a" الآن بـ NULL بايت زائدة. | يحتفظ الرمز "a" الآن بـ <code>NULL</code> بايت زائدة. | ||
يحذف رمز "A" الآن كل مسافات ASCII البيضاء الزائدة (المسافات، علامات التبويب، السطور الجديدة، حرف الإعادة و NULL بايت). | يحذف رمز "A" الآن كل مسافات ASCII البيضاء الزائدة (المسافات، علامات التبويب، السطور الجديدة، حرف الإعادة و NULL بايت). | ||
سطر 45: | سطر 45: | ||
== أمثلة == | == أمثلة == | ||
المثال 1: مثال على الدالة unpack()<syntaxhighlight lang="php"> | المثال 1: مثال على الدالة <code>unpack()</code><syntaxhighlight lang="php"> | ||
<?php | <?php | ||
سطر 95: | سطر 95: | ||
== ملاحظات == | == ملاحظات == | ||
تحذير: لاحظ أن PHP تخزن داخليًا القيم الصحيحة على أنها مؤشرة. إذا فككتَ بيانات ضخمةً من نوع البيانات long غير المُؤشر وكانت بنفس حجم قيم PHP المخزنة داخليًا، فستكون النتيجة رقمًا سالبًا حتى لو حُدِّدَنا أنَ عملية فَكٌّ التحزيم ستكون غير مؤشَّرة. | تحذير: لاحظ أن PHP تخزن داخليًا القيم الصحيحة على أنها مؤشرة. إذا فككتَ بيانات ضخمةً من نوع البيانات <code>long</code> غير المُؤشر وكانت بنفس حجم قيم PHP المخزنة داخليًا، فستكون النتيجة رقمًا سالبًا حتى لو حُدِّدَنا أنَ عملية فَكٌّ التحزيم ستكون غير مؤشَّرة. | ||
تحذير: إذا لم تُسَمِّ عنصرًا، فستُستخدَم المؤشرات الرقمية التي تبدأ من 1. اعْلَم أنه إذا كان لديك أكثر من عنصر واحد غير مسمى فسَتُسْتَبْدَلُ بعضُ البيانات لأنَّ الترقيم يعاد بداية من 1 لكل عنصر. | تحذير: إذا لم تُسَمِّ عنصرًا، فستُستخدَم المؤشرات الرقمية التي تبدأ من 1. اعْلَم أنه إذا كان لديك أكثر من عنصر واحد غير مسمى فسَتُسْتَبْدَلُ بعضُ البيانات لأنَّ الترقيم يعاد بداية من 1 لكل عنصر. | ||
المثال 3: مثال على الدالة unpack() مع مفاتيح غير مسماة<syntaxhighlight lang="php"> | المثال 3: مثال على الدالة <code>unpack()</code> مع مفاتيح غير مسماة<syntaxhighlight lang="php"> | ||
<?php | <?php | ||
سطر 127: | سطر 127: | ||
== انظر أيضًا == | == انظر أيضًا == | ||
* الدالة pack(): تحزيم البيانات في سلسلة نصية ثنائية. | * الدالة <code>[[PHP/pack|pack()]]</code>: تحزيم البيانات في سلسلة نصية ثنائية. | ||
== مصادر == | == مصادر == |
مراجعة 00:34، 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" الآن بـ يحذف رمز "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()
: تحزيم البيانات في سلسلة نصية ثنائية.