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

من موسوعة حسوب
< PHP
لا ملخص تعديل
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة explode()‎ في PHP}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدالة explode()‎ في PHP}}</noinclude>


=== الوصف ===
== الوصف ==
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ])
array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ])
</syntaxhighlight>تُعيد الدالة ‎explode()‎ مصفوفةً من السلاسل النصية، كل سلسة نصية هي تجزئة للسلسلة النصية الكلية (المُدخَلة) string، وذلك عبر تقسيمها عند محدد السلسلة delimiter.
</syntaxhighlight>تُعيد الدالة ‎<code>explode()</code>‎ مصفوفةً من السلاسل النصية، كل سلسة نصية هي تجزئة للسلسلة النصية الكلية (المُدخَلة) <code>string</code>، وذلك عبر تقسيمها عند محدد السلسلة <code>delimiter</code>.


=== المعاملات ===
== المعاملات ==


==== delimiter ====
=== <code>delimiter</code> ===
محدد السلسلة، وهو المحرف الذي ستُقسَّم السلسلة النصية عنده.
محدد السلسلة، وهو المحرف الذي ستُقسَّم السلسلة النصية عنده.


==== string ====
=== <code>string</code> ===
السلسلة النصية المُدخَلة المُرَاد تجزئتها.
السلسلة النصية المُدخَلة المُرَاد تجزئتها.


==== limit ====
=== <code>limit</code> ===
إذا كانت قيمة المعامل ‎limit موجبةً، فإن المصفوفة المُعادة ستحتوي على عناصر بعدد limit، مع احتواء آخر عنصر في المصفوفة على بقية السلسلة النصية.
إذا كانت قيمة المعامل ‎<code>limit</code> موجبةً، فإن المصفوفة المُعادة ستحتوي على عناصر بعدد <code>limit</code>، مع احتواء آخر عنصر في المصفوفة على بقية السلسلة النصية.


إذا كانت قيمة المعامل limit سالبةً، فإن المصفوفة المعادة ستحتوي على كل محارف السلسلة النصية ما عدا آخر ‎-limit عنصر.
إذا كانت قيمة المعامل <code>limit</code> سالبةً، فإن المصفوفة المعادة ستحتوي على كل محارف السلسلة النصية ما عدا آخر <code>‎-limit</code> عنصر.


أما إن كانت قيمة المعامل limit تساوي الصفر فيُتَعَامَل معها على أنها تساوي 1.
أما إن كانت قيمة المعامل <code>limit</code> تساوي الصفر فيُتَعَامَل معها على أنها تساوي <code>1</code>.


=== ملاحظة: ===
ملاحظة: على الرغم من قبول الدالة ‎<code>[[PHP/implode|implode()]]</code>‎ المعاملات في أي ترتيب كانت (لأسباب تاريخية)، إلا أن الدالة <code>explode()‎</code> لا يمكنها ذلك. احرص أن يسبق المعاملُ <code>delimiter</code> في الترتيب المعاملَ <code>string</code>.
على الرغم من قبول الدالة ‎implode()‎ المعاملات في أي ترتيب كانت (لأسباب تاريخية)، إلا أن الدالة explode()‎ لا يمكنها ذلك. احرص أن يسبق المعاملُ delimiter في الترتيب المعاملَ string.


=== القيم المعادة ===
== القيم المعادة ==
تُعيد الدالة explode()‎ مصفوفةً من السلاسل النصية بعد تقسيم المعامل string باستعمال الحدود المعينة بالمعامل delimiter. تعيد الدالة explode()‎ القيمة ‎FALSE إذا كان المعامل delimiter سلسلة نصية فارغة ("")، وتُعيد سلسلة نصية فارغة في حال ما إذا كانت قيمة المعامل delimiter غير موجودة في السلسلة النصية وقيمة المعامل limit سالبة. بخلاف ذلك، تعيد الدالة explode()‎ مصفوفةً تحتوي على السلسلة النصية.
تُعيد الدالة <code>explode()‎</code> مصفوفةً من السلاسل النصية بعد تقسيم المعامل <code>string</code> باستعمال الحدود المعينة بالمعامل <code>delimiter</code>. تعيد الدالة <code>explode()‎</code> القيمة ‎<code>FALSE</code> إذا كان المعامل <code>delimiter</code> سلسلة نصية فارغة (<code>""</code>)، وتُعيد سلسلة نصية فارغة في حال ما إذا كانت قيمة المعامل <code>delimiter</code> غير موجودة في السلسلة النصية وقيمة المعامل <code>limit</code> سالبة. بخلاف ذلك، تعيد الدالة <code>explode()‎</code> مصفوفةً تحتوي على السلسلة النصية.


=== سجل التغييرات ===
== سجل التغييرات ==
{| class="wikitable"
{| class="wikitable"
|الإصدار
!الإصدار
|الوصف
!الوصف
|-
|-
|5.1.0
|5.1.0
|إضافة دعم القيم السالبة للمعامل limit
|إضافة دعم القيم السالبة للمعامل <code>limit</code>
|}
|}


=== أمثلة ===
== أمثلة ==
 
المثال 1: مثال بسيط عن الدالة <code>explode()‎</code><syntaxhighlight lang="php">
==== المثال 1:  مثال بسيط عن الدالة explode()‎ ====
<syntaxhighlight lang="php">
‎<?php
‎<?php
// المثال الأول
// المثال الأول
 
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
 
$pieces = explode(" ", $pizza);
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
echo $pieces[1]; // piece2


// المثال الثاني
// المثال الثاني
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $user; // foo
echo $pass; // *
echo $pass; // *
?>
?>




</syntaxhighlight>
</syntaxhighlight>المثال 2: مثال عن القيم المُعادة للدالة <code>explode()‎</code><syntaxhighlight lang="php">
 
==== المثال 2: مثال عن القيم المُعادة للدالة explode()‎ ====
<syntaxhighlight lang="php">
‎<?php
‎<?php
/*
تُعيد السلاسل النصية التي لا تحتوي على المعامل delimiter مصفوفة بعنصر واحد تحمل السلسلة النصية الاصلية
*/
$input1 = "hello";
$input1 = "hello";
$input2 = "hello,there";
$input2 = "hello,there";
$input3 = ',';
$input3 = ',';
var_dump( explode( ',', $input1 ) );
var_dump( explode( ',', $input1 ) );
var_dump( explode( ',', $input2 ) );
var_dump( explode( ',', $input2 ) );
var_dump( explode( ',', $input3 ) );
var_dump( explode( ',', $input3 ) );
?>
?>




</syntaxhighlight>يُخرِج المثال السابق الناتج التالي:<syntaxhighlight lang="php">
</syntaxhighlight>يُخرِج المثال السابق الناتج التالي:<syntaxhighlight lang="text">
‎array(1)
array(1)
 
(
(
 
    [0] => string(5) "hello"
   [0] => string(5) "hello"
 
)
)
array(2)
array(2)
(
(
 
    [0] => string(5) "hello"
   [0] => string(5) "hello"
    [1] => string(5) "there"
 
   [1] => string(5) "there"
 
)
)
array(2)
array(2)
(
(
 
    [0] => string(0) ""
   [0] => string(0) ""
    [1] => string(0) ""
 
   [1] => string(0) ""
 
)
)
</syntaxhighlight>
</syntaxhighlight>


==== المثال 3: مثال عن قيم المعامل limit ====
==== المثال 3: مثال عن قيم المعامل <code>limit</code> ====
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
‎<?php
‎<?php
سطر 130: سطر 87:


// قيمة المعامل limit موجبة
// قيمة المعامل limit موجبة
print_r(explode('|', $str, 2));
print_r(explode('|', $str, 2));


// قيمة المعامل سالبة (بدءًا من الإصدار 5.1 من اللغة)
// قيمة المعامل سالبة (بدءًا من الإصدار 5.1 من اللغة)
print_r(explode('|', $str, -1));
print_r(explode('|', $str, -1));
?>
?>


 
</syntaxhighlight>يُخرِج المثال السابق المخرجات الآتية:<syntaxhighlight lang="text">
</syntaxhighlight>يُخرِج المثال السابق المخرجات الآتية:<syntaxhighlight lang="php">
Array
Array
(
(
 
    [0] => one
   [0] => one
    [1] => two|three|four
 
   [1] => two|three|four
 
)
)
Array
Array
(
(
 
    [0] => one
   [0] => one
    [1] => two
 
    [2] => three
   [1] => two
 
   [2] => three
 
)
)
</syntaxhighlight>ملاحظة: تعدّ الدالة <code>explode()‎</code> آمنة ثنائيًا (binary-safe، أي يمكن استخدامها على البيانات الممثلة في النظام الثنائي).  


== انظر أيضًا ==
* <code>[[PHP/preg split|preg_split()‎]]</code>: تجزئة السلسلة النصية بواسطة التعابير النمطية (regular expressions).
* <code>[[PHP/str split|str_split()‎]]</code>: تحويل سلسلة نصية إلى جدول بيانات.
* <code>[[PHP/mb split|mb_split()‎]]</code>: تجزئة عدة سلاسل نصية بواسطة التعابير النمطية (regular expressions).
* <code>[[PHP/str word count|str_word_count()‎]]</code>: إعادة معلومات حول كلمات السلسلة النصية.
* <code>[[PHP/strtok|strtok()‎]]</code>: تجزئة السلسلة النصية.
* <code>[[PHP/implode|implode()‎]]</code>: جمع عناصر مصفوفة لتشكِّل سلسلة نصية واحدة.


</syntaxhighlight>
== مصادر ==
 
* [http://php.net/manual/en/function.explode.php صفحة الدالة explode‎ في توثيق PHP الرسمي]
=== ملاحظة ===
تعدّ الدالة explode()‎ آمنة ثنائيًا (binary-safe، أي يمكن استخدامها على البيانات الممثلة في النظام الثنائي).  
 
=== انظر أيضًا ===
* preg_split()‎: تجزئة السلسلة النصية بواسطة التعابير النمطية (regular expressions).
* str_split()‎: تحويل سلسلة نصية إلى جدول بيانات.
* mb_split()‎: تجزئة عدة سلاسل نصية بواسطة التعابير النمطية (regular expressions).
* str_word_count()‎: إعادة معلومات حول كلمات السلسلة النصية.
* strtok()‎: تجزئة السلسلة النصية.
* implode()‎: جمع عناصر مصفوفة لتشكِّل سلسلة نصية واحدة.
 
=== مصادر ===
* صفحة الدالة explode‎ في توثيق PHP الرسمي. 

مراجعة 16:33، 5 أبريل 2018


الوصف

array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ])

تُعيد الدالة ‎explode()‎ مصفوفةً من السلاسل النصية، كل سلسة نصية هي تجزئة للسلسلة النصية الكلية (المُدخَلة) string، وذلك عبر تقسيمها عند محدد السلسلة delimiter.

المعاملات

delimiter

محدد السلسلة، وهو المحرف الذي ستُقسَّم السلسلة النصية عنده.

string

السلسلة النصية المُدخَلة المُرَاد تجزئتها.

limit

إذا كانت قيمة المعامل ‎limit موجبةً، فإن المصفوفة المُعادة ستحتوي على عناصر بعدد limit، مع احتواء آخر عنصر في المصفوفة على بقية السلسلة النصية.

إذا كانت قيمة المعامل limit سالبةً، فإن المصفوفة المعادة ستحتوي على كل محارف السلسلة النصية ما عدا آخر ‎-limit عنصر.

أما إن كانت قيمة المعامل limit تساوي الصفر فيُتَعَامَل معها على أنها تساوي 1.

ملاحظة: على الرغم من قبول الدالة ‎implode()‎ المعاملات في أي ترتيب كانت (لأسباب تاريخية)، إلا أن الدالة explode()‎ لا يمكنها ذلك. احرص أن يسبق المعاملُ delimiter في الترتيب المعاملَ string.

القيم المعادة

تُعيد الدالة explode()‎ مصفوفةً من السلاسل النصية بعد تقسيم المعامل string باستعمال الحدود المعينة بالمعامل delimiter. تعيد الدالة explode()‎ القيمة ‎FALSE إذا كان المعامل delimiter سلسلة نصية فارغة ("")، وتُعيد سلسلة نصية فارغة في حال ما إذا كانت قيمة المعامل delimiter غير موجودة في السلسلة النصية وقيمة المعامل limit سالبة. بخلاف ذلك، تعيد الدالة explode()‎ مصفوفةً تحتوي على السلسلة النصية.

سجل التغييرات

الإصدار الوصف
5.1.0 إضافة دعم القيم السالبة للمعامل limit

أمثلة

المثال 1: مثال بسيط عن الدالة explode()‎

<?php
// المثال الأول
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// المثال الثاني
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>

المثال 2: مثال عن القيم المُعادة للدالة explode()‎

<?php
$input1 = "hello";
$input2 = "hello,there";
$input3 = ',';
var_dump( explode( ',', $input1 ) );
var_dump( explode( ',', $input2 ) );
var_dump( explode( ',', $input3 ) );
?>

يُخرِج المثال السابق الناتج التالي:

array(1)
(
    [0] => string(5) "hello"
)
array(2)
(
    [0] => string(5) "hello"
    [1] => string(5) "there"
)
array(2)
(
    [0] => string(0) ""
    [1] => string(0) ""
)

المثال 3: مثال عن قيم المعامل limit

<?php

$str = 'one|two|three|four';

// قيمة المعامل limit موجبة
print_r(explode('|', $str, 2));

// قيمة المعامل سالبة (بدءًا من الإصدار 5.1 من اللغة)
print_r(explode('|', $str, -1));
?>

يُخرِج المثال السابق المخرجات الآتية:

Array
(
    [0] => one
    [1] => two|three|four
)
Array
(
    [0] => one
    [1] => two
    [2] => three
)

ملاحظة: تعدّ الدالة explode()‎ آمنة ثنائيًا (binary-safe، أي يمكن استخدامها على البيانات الممثلة في النظام الثنائي).  

انظر أيضًا

  • preg_split()‎: تجزئة السلسلة النصية بواسطة التعابير النمطية (regular expressions).
  • str_split()‎: تحويل سلسلة نصية إلى جدول بيانات.
  • mb_split()‎: تجزئة عدة سلاسل نصية بواسطة التعابير النمطية (regular expressions).
  • str_word_count()‎: إعادة معلومات حول كلمات السلسلة النصية.
  • strtok()‎: تجزئة السلسلة النصية.
  • implode()‎: جمع عناصر مصفوفة لتشكِّل سلسلة نصية واحدة.

مصادر