2010-08-07 22 views
23

Tôi đã tự hỏi làm thế nào tôi có thể loại bỏ tất cả các giá trị rỗng khi tôi phát nổ một chuỗi bằng cách sử dụng PHP ví dụ, cho phép nói rằng một người dùng nhập ",jay,john,,,bill,glenn,,,"?Làm thế nào tôi có thể loại bỏ tất cả các giá trị rỗng khi tôi phát nổ một chuỗi bằng cách sử dụng PHP?

Cảm ơn bạn đã trợ giúp.

Đây là một phần của mã phát nổ giá trị do người dùng gửi.

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

Trả lời

71

Ví dụ: qua array_filter() hoặc bằng cách sử dụng tùy chọn PREG_SPLIT_NO_EMPTY trên 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); 

in

--- 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 cách hoàn hảo để làm điều đó trong khi tôi mis-đọc những câu hỏi :) – Sarfraz

+0

không làm việc ở tất cả: ( – snag

+0

@snag: Nó hoạt động. – Sarfraz

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

không hoạt động chút nào: ( – snag

+0

bạn có chắc là dấu phẩy không được mã hóa dưới dạng thực thể? – Haroldo

+0

Phải là 'phát nổ', ', $ thẻ) 'và giữ nguyên tố rỗng cuối cùng cho chuỗi đã cho' ", jay, john ,,, bill, glenn ,,," '. – VolkerK

0
$tags = array_diff(explode(",", $_POST['tag']),array("")); 
Các vấn đề liên quan