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

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة explode()‎ في PHP}}</noinclude>')
 
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة explode()‎ في PHP}}</noinclude>
+
(PHP 4, PHP 5, PHP 7)
 +
 
 +
تقسم الدالة <code>explode()‎</code> سلسلةً نصيةً إلى أقسام وتعيدها على شكل مصفوفة.<noinclude>{{DISPLAYTITLE:الدالة <code>explode()‎</code> في PHP}}</noinclude>
 +
== الوصف ==
 +
<syntaxhighlight lang="php">
 +
array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ])
 +
</syntaxhighlight>تُعيد الدالة ‎<code>explode()</code>‎ مصفوفةً من السلاسل النصية، كل سلسة نصية هي تجزئة للسلسلة النصية الكلية (المُدخَلة) <code>string</code>، وذلك عبر تقسيمها عند محدد السلسلة <code>delimiter</code>.
 +
 
 +
== المعاملات ==
 +
 
 +
=== <code>delimiter</code> ===
 +
محدد السلسلة، وهو المحرف الذي ستُقسَّم السلسلة النصية عنده.
 +
 
 +
=== <code>string</code> ===
 +
السلسلة النصية المُدخَلة المُرَاد تجزئتها.
 +
 
 +
=== <code>limit</code> ===
 +
إذا كانت قيمة المعامل ‎<code>limit</code> موجبةً، فإن المصفوفة المُعادة ستحتوي على عناصر بعدد <code>limit</code>، مع احتواء آخر عنصر في المصفوفة على بقية السلسلة النصية.
 +
 
 +
إذا كانت قيمة المعامل <code>limit</code> سالبةً، فإن المصفوفة المعادة ستحتوي على كل محارف السلسلة النصية ما عدا آخر <code>‎-limit</code> عنصر.
 +
 
 +
أما إن كانت قيمة المعامل <code>limit</code> تساوي الصفر فيُتَعَامَل معها على أنها تساوي <code>1</code>.
 +
 
 +
ملاحظة: على الرغم من قبول الدالة ‎<code>[[PHP/implode|implode()]]</code>‎ المعاملات في أي ترتيب كانت (لأسباب تاريخية)، إلا أن الدالة <code>explode()‎</code> لا يمكنها ذلك. احرص أن يسبق المعاملُ <code>delimiter</code> في الترتيب المعاملَ <code>string</code>.
 +
 
 +
== القيم المعادة ==
 +
تُعيد الدالة <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"
 +
!الإصدار
 +
!الوصف
 +
|-
 +
|5.1.0
 +
|إضافة دعم القيم السالبة للمعامل <code>limit</code>
 +
|}
 +
 
 +
== أمثلة ==
 +
المثال 1: مثال بسيط عن الدالة <code>explode()‎</code><syntaxhighlight lang="php">
 +
‎<?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; // *
 +
?>
 +
 
 +
 
 +
</syntaxhighlight>المثال 2: مثال عن القيم المُعادة للدالة <code>explode()‎</code><syntaxhighlight lang="php">
 +
‎<?php
 +
$input1 = "hello";
 +
$input2 = "hello,there";
 +
$input3 = ',';
 +
var_dump( explode( ',', $input1 ) );
 +
var_dump( explode( ',', $input2 ) );
 +
var_dump( explode( ',', $input3 ) );
 +
?>
 +
 
 +
 
 +
</syntaxhighlight>يُخرِج المثال السابق الناتج التالي:<syntaxhighlight lang="text">
 +
array(1)
 +
(
 +
    [0] => string(5) "hello"
 +
)
 +
array(2)
 +
(
 +
    [0] => string(5) "hello"
 +
    [1] => string(5) "there"
 +
)
 +
array(2)
 +
(
 +
    [0] => string(0) ""
 +
    [1] => string(0) ""
 +
)
 +
</syntaxhighlight>المثال 3: مثال عن قيم المعامل <code>limit</code><syntaxhighlight lang="php">
 +
‎<?php
 +
 
 +
$str = 'one|two|three|four';
 +
 
 +
// قيمة المعامل limit موجبة
 +
print_r(explode('|', $str, 2));
 +
 
 +
// قيمة المعامل سالبة (بدءًا من الإصدار 5.1 من اللغة)
 +
print_r(explode('|', $str, -1));
 +
?>
 +
 
 +
</syntaxhighlight>يُخرِج المثال السابق المخرجات الآتية:<syntaxhighlight lang="text">
 +
Array
 +
(
 +
    [0] => one
 +
    [1] => two|three|four
 +
)
 +
Array
 +
(
 +
    [0] => one
 +
    [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>: جمع عناصر مصفوفة لتشكِّل سلسلة نصية واحدة.
 +
 
 +
== مصادر ==
 +
* [http://php.net/manual/en/function.explode.php صفحة الدالة explode‎ في توثيق PHP الرسمي]. 
 +
[[تصنيف:PHP]]
 +
[[تصنيف:PHP Function]]
 +
[[تصنيف:PHP String]]

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

مصادر