الدالة preg_split()
في PHP
(PHP 4, PHP 5, PHP 7)
تُقسِّم الدالة preg_split()
سلسلة نصية باستخدام التعبير النمطي.
الوصف
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
تُقسِّم هذه الدالة السلسلة النصية المعطاة باستخدام تعبير نمطي.
المعاملات
pattern
النمط المراد البحث عنه، كسلسلة نصية.
subject
السلسلة النصية المُدخلة.
limit
إذا تم تحديد هذا المعامل، فستُعاد السلاسل النصية الفرعية فقط حتى limit
، مع ترك باقي السلسلة النصية لتُوضَع في السلسلة النصية الفرعية الأخيرة. وعندما يكون المعامل limit
يساوي -1، أو 0 أو NULL
فإنه يعني أنه "بلا حدود"، وكما هو الحال دائما في PHP، يمكننا استخدام NULL
للتخطي إلى المعامل flags
.
flags
يمكن أن يكون أي مزيج من الرايات التالية (مُجمَّعة باستخدام المعامل الثنائي |):
PREG_SPLIT_NO_EMPTY
: إذا ضُبِطت هذه الراية، فستُعاد القطع غير الفارغة فقط بواسطة الدالةpreg_split()
.PREG_SPLIT_DELIM_CAPTURE
: إذا ضُبِطت هذه الراية، سيُلتَقط التعبير المُحاط بالقوسين في النمط المُحدِد ويُعيده أيضًا.PREG_SPLIT_OFFSET_CAPTURE
: إذا ضُبِطت هذه الراية، فستُعاد أيضًا إزاحة السلسلة المُذيّلة لكل مطابقة. لاحظ أن هذا يغير القيمة المُعادة في مصفوفةٍ ما حيث يكون كل عنصر هو مصفوفة تتكون من سلسلة مطابِقة عند الفهرس 0 وإزاحة سلسلتها النصية فيsubject
عند الفهرس 1.
القيم المعادة
تُعيد هذه الدالة مصفوفة تحتوي على سلاسل نصية فرعية من تقسيم subject
على طول الحدود المتطابقة مع pattern
، أو FALSE عند الفشل.
أمثلة
المثال 1: مثال على الدالة preg_split()
: الحصول على أجزاء من سلسلة بحث
تقسّيم العبارة بأي عدد من حروف الفاصلات المسافات، والتي تتضمن \r, \t, \n و \f
<?php
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>
سوف تكون مُخرجات المثال أعلاه كالتالي:
Array
(
[0] => hypertext
[1] => language
[2] => programming
)
المثال 2: مثال على تقسيم سلسلة نصية إلى الحروف المكوِّنة
<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>
سوف تكون مُخرجات المثال أعلاه كالتالي:
Array
(
[0] => s
[1] => t
[2] => r
[3] => i
[4] => n
[5] => g
)
المثال 3: تقسيم سلسلة نصية إلى مطابقات ومعرفة إزاحتها
<?php
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>
سوف تكون مُخرجات المثال أعلاه كالتالي:
Array
(
[0] => Array
(
[0] => hypertext
[1] => 0
)
[1] => Array
(
[0] => language
[1] => 10
)
[2] => Array
(
[0] => programming
[1] => 19
)
)
ملاحظات
نصيحة: إذا كنا لسنا بحاجة إلى قوة التعبيرات النمطية، فيمكننا اختيار بدائل أسرع (وإن كانت أبسط) مثل explode()
أو str_split()
.
نصيحة: إذا فشلت المطابقة، فستُعاد مصفوفة ذات عنصر واحد يحتوي على السلسلة النصية المُدخلة.
انظر أيضًا
- أنماط PCRE.
- الدالة
preg_quote()
: اقتباس حروف التعبير النمطي. - الدالة
implode()
: ضم عناصر مصفوفة إلى سلسلة نصية. - الدالة
preg_match()
: مطابقة تعبير نمطي. - الدالة
preg_match_all()
: إجراء مطابقة شاملة لتعبير تمطي. - الدالة
preg_replace()
البحث عن تعبير نمطي واستبداله. - الدالة
preg_last_error()
: إعادة رمز الخطأ الخاص بتنفيذ آخر PCRE regex.