我想知道如何在使用PHP爆炸字符串时删除所有空值,例如,让用户输入",jay,john,,,bill,glenn,,,"
?
提前感谢您的帮助。
以下是爆炸用户提交的值的代码的一部分。
$tags = explode(",", $_POST['tag']);
答案 0 :(得分:81)
E.g。通过array_filter()或使用preg_split()上的PREG_SPLIT_NO_EMPTY选项
<?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);
打印
--- 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"
}
答案 1 :(得分:2)
$tags = array_diff(explode(",", $_POST['tag']),array(""));
答案 2 :(得分:0)
//replace multiple commas
$tags = preg_replace('/,+/', ',', $_POST['tag']);
//explode
$tags = explode(',', $tags);
答案 3 :(得分:-1)
只需尝试:
$tags = explode(", ", $_POST['tag']);
在逗号后添加空格,即可完成工作!