الفرق بين المراجعتين ل"PHP/unpack"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
(إضافات و تعديلات تنسيقية)
سطر 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 وdouble معًا كلا من Big Endian و Little Endian.
+
|يدعم نوعا البيانات <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" الآن بـ 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()‎: تحزيم البيانات في سلسلة نصية ثنائية.

مصادر