2010-08-07 7 views
23

मैं सोच रहा था कि जब मैं PHP का उपयोग कर स्ट्रिंग को विस्फोट करता हूं तो मैं सभी खाली मानों को कैसे हटा सकता हूं, मान लें कि उपयोगकर्ता ",jay,john,,,bill,glenn,,," में प्रवेश करता है?जब मैं PHP का उपयोग कर स्ट्रिंग को विस्फोट करता हूं तो मैं सभी खाली मानों को कैसे हटा सकता हूं?

सहायता के लिए अग्रिम धन्यवाद।

यहां दिए गए कोड का हिस्सा है जो उपयोगकर्ता द्वारा सबमिट किए गए मानों को विस्फोट करता है।

$tags = explode(",", $_POST['tag']); 

उत्तर

71

उदा। array_filter() के माध्यम से या preg_split()

<?php 
// only for testing purposes ... 
$_POST['tag'] = ",jay,john,,,bill,glenn,,0,,"; 

echo "--- version 1: array_filter ----\n"; 
// note that this also filters "0" out, since (bool)"0" is FALSE in php 
// array_filter() called with only one parameter tests each element as a boolean value 
// see http://docs.php.net/language.types.type-juggling 
$tags = array_filter(explode(",", $_POST['tag'])); 
var_dump($tags); 

echo "--- version 2: array_filter/strlen ----\n"; 
// this one keeps the "0" element 
// array_filter() calls strlen() for each element of the array and tests the result as a boolean value 
$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); 

प्रिंट पर PREG_SPLIT_NO_EMPTY विकल्प

--- version 1: array_filter ---- 
array(4) { 
    [1]=> 
    string(3) "jay" 
    [2]=> 
    string(4) "john" 
    [5]=> 
    string(4) "bill" 
    [6]=> 
    string(5) "glenn" 
} 
--- version 2: array_filter/strlen ---- 
array(5) { 
    [1]=> 
    string(3) "jay" 
    [2]=> 
    string(4) "john" 
    [5]=> 
    string(4) "bill" 
    [6]=> 
    string(5) "glenn" 
    [8]=> 
    string(1) "0" 
} 
--- version 3: PREG_SPLIT_NO_EMPTY ---- 
array(5) { 
    [0]=> 
    string(3) "jay" 
    [1]=> 
    string(4) "john" 
    [2]=> 
    string(4) "bill" 
    [3]=> 
    string(5) "glenn" 
    [4]=> 
    string(1) "0" 
} 
+0

+1 सही यह करने के लिए जिस तरह से उपयोग करते समय मैं सवाल :) – Sarfraz

+0

था गलत नहीं पढ़ द्वारा बिल्कुल काम करें :( – snag

+0

@snag: यह काम करता है। – Sarfraz

0
//replace multiple commas 
$tags = preg_replace('/,+/', ',', $_POST['tag']); 
//explode 
$tags = explode(',', $tags); 
+0

बिल्कुल काम नहीं किया :( – snag

+0

क्या आप वाकई कॉमा को इकाइयों के रूप में एन्कोड नहीं कर रहे हैं? – Haroldo

+0

'विस्फोट (', ', $ टैग) होना चाहिए 'और दिए गए स्ट्रिंग के लिए अंतिम खाली तत्व रखता है," जय, जॉन, बिल, ग्लेन, ",' – VolkerK

0
$tags = array_diff(explode(",", $_POST['tag']),array("")); 
संबंधित मुद्दे

 संबंधित मुद्दे