array_filter() या preg_split() पर PREG_SPLIT_NO_EMPTY विकल्प का उपयोग स्ट्रिंग को explode करते समय खाली मानों को हटाने के लिए किया जा सकता है:
उदाहरण
<?php
$_POST['tag'] = ",abc,defg,,,hijk,lmnop,,0,,";
echo "--- version 1: array_filter ----\n";
// ध्यान दें कि यह "0" को भी फ़िल्टर करता है, क्योंकि (bool)"0" PHP में FALSE है
// array_filter() को केवल एक पैरामीटर के साथ कॉल करने पर प्रत्येक एलिमेंट को बूलियन मान के रूप में परखा जाता है
$tags = array_filter(explode(",", $_POST['tag']));
var_dump($tags);
echo "--- version 2: array_filter/strlen ----\n";
// यह "0" एलिमेंट को रखता है
// array_filter() सरणी के प्रत्येक एलिमेंट के लिए strlen() को कॉल करता है और परिणाम को बूलियन मान के रूप में परखता है
$tags = array_filter(explode(",", $_POST['tag']), 'strlen');
var_dump($tags);
echo "--- version 3: PREG_SPLIT_NO_EMPTY ----\n";
$tags = preg_split('/,/', $_POST['tag'], -1, PREG_SPLIT_NO_EMPTY);
var_dump($tags);
?>
आउटपुट
यह निम्न आउटपुट देगा:
--- version 1: array_filter ----
array(4) {
[1]=> string(3) "abc"
[2]=> string(4) "defg"
[5]=> string(4) "hijk"
[6]=> string(5) "lmnop"
}
--- version 2: array_filter/strlen ----
array(5) {
[1]=> string(3) "abc"
[2]=> string(4) "defg"
[5]=> string(4) "hijk"
[6]=> string(5) "lmnop"
[8]=> string(1) "0"
}
--- version 3: PREG_SPLIT_NO_EMPTY ----
array(5) {
[0]=> string(3) "abc"
[1]=> string(4) "defg"
[2]=> string(4) "hijk"
[3]=> string(5) "lmnop"
[4]=> string(1) "0"
}