الفرق بين المراجعتين لصفحة: «PHP/unpack»

من موسوعة حسوب
< PHP
المساهمة في ترجمة الصفحة
 
تعديلات طفيفة على التنسيق
 
(2 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
= الدالة unpack()‎ في PHP =
<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>[[PHP/pack|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>[[PHP/float|float]]</code> و<code>[[php/double|double]]</code> معًا كلا من Big Endian و Little Endian.
|-
|-
|7.1.0
|7.1.0
سطر 39: سطر 39:
|أُجْرِيَتْ تغييرات لجعل هذه الدالة متوافقة مع Perl:
|أُجْرِيَتْ تغييرات لجعل هذه الدالة متوافقة مع Perl:


يحتفظ الرمز "a" الآن بـ NULL بايت زائدة.
يحتفظ الرمز "a" الآن بـ <code>[[PHP/null|NULL]]</code> بايت زائدة.


يحذف رمز "A" الآن كل مسافات ASCII البيضاء الزائدة (المسافات، علامات التبويب، السطور الجديدة، حرف الإعادة و NULL بايت).
يحذف رمز "A" الآن كل مسافات ASCII البيضاء الزائدة (المسافات، علامات التبويب، السطور الجديدة، حرف الإعادة و [[PHP/null|NULL]] بايت).
|}
|}


== أمثلة ==
== أمثلة ==
المثال 1: مثال على الدالة unpack()‎<syntaxhighlight lang="php">
المثال 1: مثال على الدالة <code>unpack()</code>‎<syntaxhighlight lang="php">
<?php
<?php
$binarydata = "\x04\x00\xa0\x00";
$binarydata = "\x04\x00\xa0\x00";
$array = unpack("cchars/nint", $binarydata);
$array = unpack("cchars/nint", $binarydata);
print_r($array);
print_r($array);
?>
?>
</syntaxhighlight>ناتج المثال السابق:<syntaxhighlight lang="php">
</syntaxhighlight>ناتج المثال السابق:<syntaxhighlight lang="text">
Array
Array
(
(
 
  [chars] => 4
   [chars] => 4
 [int] => 160
 
   [int] => 160
 
)
)


المثال 2: مثال على الدالة unpack()‎ مع مُكرِّر


</syntaxhighlight>المثال 2: مثال على الدالة <code>unpack()</code>‎ مع مُكرِّر<syntaxhighlight lang="php">
<?php
<?php
$binarydata = "\x04\x00\xa0\x00";
$binarydata = "\x04\x00\xa0\x00";
$array = unpack("c2chars/nint", $binarydata);
$array = unpack("c2chars/nint", $binarydata);
print_r($array);
print_r($array);
?>
?>


</syntaxhighlight>ناتج المثال السابق:<syntaxhighlight lang="php">
</syntaxhighlight>ناتج المثال السابق:<syntaxhighlight lang="php">
Array
Array
(
(
 
  [chars1] => 4
   [chars1] => 4
  [chars2] => 0
 
  [int] => 40960
   [chars2] => 0
 
   [int] => 40960
 
)
)


سطر 95: سطر 78:


== ملاحظات ==
== ملاحظات ==
تحذير: لاحظ أن PHP تخزن داخليًا القيم الصحيحة على أنها مؤشرة. إذا فككتَ بيانات ضخمةً من نوع البيانات long غير المُؤشر وكانت بنفس حجم قيم PHP المخزنة داخليًا، فستكون النتيجة رقمًا سالبًا حتى لو حُدِّدَنا أنَ عملية فَكٌّ التحزيم ستكون غير مؤشَّرة.
تحذير: لاحظ أن PHP تخزن داخليًا القيم الصحيحة على أنها مؤشرة. إذا فككتَ بيانات ضخمةً من نوع البيانات <code>[[php/long|long]]</code> غير المُؤشر وكانت بنفس حجم قيم PHP المخزنة داخليًا، فستكون النتيجة رقمًا سالبًا حتى لو حُدِّدَنا أنَ عملية فَكٌّ التحزيم ستكون غير مؤشَّرة.


تحذير: إذا لم تُسَمِّ عنصرًا، فستُستخدَم المؤشرات الرقمية التي تبدأ من 1. اعْلَم أنه إذا كان لديك أكثر من عنصر واحد غير مسمى فسَتُسْتَبْدَلُ بعضُ البيانات لأنَّ الترقيم يعاد بداية من 1 لكل عنصر.
تحذير: إذا لم تُسَمِّ عنصرًا، فستُستخدَم المؤشرات الرقمية التي تبدأ من 1. اعْلَم أنه إذا كان لديك أكثر من عنصر واحد غير مسمى فسَتُسْتَبْدَلُ بعضُ البيانات لأنَّ الترقيم يعاد بداية من 1 لكل عنصر.


المثال 3: مثال على الدالة unpack()‎ مع مفاتيح غير مسماة<syntaxhighlight lang="php">
المثال 3: مثال على الدالة <code>unpack()</code>‎ مع مفاتيح غير مسماة<syntaxhighlight lang="php">
<?php
<?php
$binarydata = "\x32\x42\x00\xa0";
$binarydata = "\x32\x42\x00\xa0";
$array = unpack("c2/n", $binarydata);
$array = unpack("c2/n", $binarydata);
var_dump($array);
var_dump($array);
?>
?>






</syntaxhighlight>ناتج المثال السابق:<syntaxhighlight lang="php">
</syntaxhighlight>ناتج المثال السابق:<syntaxhighlight lang="text">
array(2) {
array(2) {
 
[1]=>
 [1]=>
 
 int(160)
 int(160)
 [2]=>
 [2]=>
 int(66)
 int(66)
}
}
</syntaxhighlight>لاحظ أنه يُكتب فوق القيمة الأولى من محدد c بواسطة القيمة الأولى من محدد n.
</syntaxhighlight>لاحظ أنه يُكتب فوق القيمة الأولى من محدد c بواسطة القيمة الأولى من محدد n.


== انظر أيضًا ==
== انظر أيضًا ==
* الدالة pack()‎: تحزيم البيانات في سلسلة نصية ثنائية.
* الدالة <code>[[PHP/pack|pack()]]</code>‎: تحزيم البيانات في سلسلة نصية ثنائية.


== مصادر ==
== مصادر ==
* [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]]

المراجعة الحالية بتاريخ 16:22، 29 مايو 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()‎: تحزيم البيانات في سلسلة نصية ثنائية.

مصادر