الدالة explode()‎ في PHP

من موسوعة حسوب
< PHP
مراجعة 16:35، 5 أبريل 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

(PHP 4, PHP 5, PHP 7)

تقسم الدالة explode()‎ سلسلةً نصيةً إلى أقسام وتعيدها على شكل مصفوفة.

الوصف

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()‎: جمع عناصر مصفوفة لتشكِّل سلسلة نصية واحدة.

مصادر