我希望清除字符串中的所有逗号,然后将所有单词用逗号分隔成数组。
对我而言,如果我有这种类型的字符串,那么很容易做到:
word1,word2,word3,word4,word5,word6
我有责任将它们分解并将它们放入这样的数组:
$words = "word1,word2,word3,word4,word5,word6";
$explode = explode(",", $words);
$array = array();
foreach($explode as $word) {
$array[] = $word;
}
这就是我的需要: 在我有这种字符串的情况下,什么是approch?
word1,,word2,,,word3,word4,,,,,,,,,,,,word5,,,,word6...
单词之间的逗号数量未定义且最多可包含100个逗号。
如果你对这种字符串有很好的了解,请告诉我。
答案 0 :(得分:2)
PHP中的array_filter函数用于"过滤"一个数组,即从满足条件的数组元素中创建一个新数组。
默认情况下,如果我们不将任何回调传递给array_filter,它将删除所有falsey和null值。我们可以发送一个回调函数作为第二个参数,对于应该保留的元素返回true,对于应该删除的元素返回false。
$words = "word1,word2,word3,word4,word5,word6";
$words_arr = array_filter(explode(",", $words));
print_r($words_arr);
如果逗号之间有空格,则:
$words_arr = array_filter(explode(",", $words), function ($e) {
return strlen(trim($e)) > 0; // Only select those elements which have a length > 0 after trimming
});
strlen用于获取字符串长度
trim用于从字符串的开头和结尾删除空格
答案 1 :(得分:2)
使用preg_split
$explode = preg_split("/,+/", $words);
答案 2 :(得分:1)
首先使用explode
获取所有值:
>>> $values = explode(',', 'word1,word2,,,,word3');
>>> print_r($values);
Array
(
[0] => word1
[1] => word2
[2] =>
[3] =>
[4] =>
[5] => word3
)
在解决方案上使用array_filter
来过滤掉空结果:
>>> $non_empty_values = array_filter($values);
>>> print_r($non_empty_values);
Array
(
[0] => word1
[1] => word2
[5] => word3
)
最后,要重置数组索引,请使用array_values
:
>>> $results = array_values($non_empty_values);
>>> print_r($results)
Array
(
[0] => word1
[1] => word2
[2] => word3
)