الفرق بين المراجعتين لصفحة: «PHP/explode»
هارون-بوكرش (نقاش | مساهمات) لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 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>تُعيد الدالة | </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>، مع احتواء آخر عنصر في المصفوفة على بقية السلسلة النصية. | ||
إذا كانت قيمة المعامل 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>. | |||
على الرغم من قبول الدالة | |||
== القيم المعادة == | |||
تُعيد الدالة explode() مصفوفةً من السلاسل النصية بعد تقسيم المعامل string باستعمال الحدود المعينة بالمعامل delimiter. تعيد الدالة 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"> | |||
<syntaxhighlight lang="php"> | |||
<?php | <?php | ||
// المثال الأول | // المثال الأول | ||
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; | |||
$pizza | |||
$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"> | ||
<syntaxhighlight lang="php"> | |||
<?php | <?php | ||
$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=" | </syntaxhighlight>يُخرِج المثال السابق الناتج التالي:<syntaxhighlight lang="text"> | ||
array(1) | |||
( | ( | ||
[0] => string(5) "hello" | |||
) | ) | ||
array(2) | array(2) | ||
( | ( | ||
[0] => string(5) "hello" | |||
[1] => string(5) "there" | |||
) | ) | ||
array(2) | array(2) | ||
( | ( | ||
[0] => 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=" | |||
Array | Array | ||
( | ( | ||
[0] => one | |||
[1] => two|three|four | |||
) | ) | ||
Array | 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 الرسمي]. | |||
== | |||
* | |||
مراجعة 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()
: جمع عناصر مصفوفة لتشكِّل سلسلة نصية واحدة.