从PHP数组中删除空格/空值

时间:2014-03-03 05:19:15

标签: php arrays

我正在开发一个单词计数应用程序,我正在使用以下代码将单词加载到数组中。

$str = ' Some string is here     ...  Another string.. ';
$str = trim($str);
$str = preg_replace('/\s+/', ' ', $str);
$str_array = explode(" ", $str);
$str_array = array_filter($str_array);

但问题是我的数组中的空值如下所示。

Array
(
    [0] => Word1
    [1] => Word2
    [2] => Word3
    [3] => 
    [4] => 
    [5] => 
)

我尝试了array_filter($str_array)以及更多stackoverflow答案。但我没能完成这件事。有人可以帮我解决这个问题吗?谢谢!

4 个答案:

答案 0 :(得分:5)

使用trim array_map修剪数组元素,最后使用array_filter作为回调进行strlen

<?php
$arr=Array
(
    0 => 'Word1',
    1 => 'Word2',
    2 => 'Word3',
    3 => ' ',
    4 => '',
    5 => ''
);

$new_arr = array_filter(array_map('trim',$arr),'strlen');
print_r($new_arr);

Demo

答案 1 :(得分:1)

试试这个......

 foreach ($array as $key=>$value) 
 { 
     if($value == '')
     {
       unset($array[$key]);
     }
 }

答案 2 :(得分:0)

$str = ' Some string is here     ...  Another string.. ';
$str = trim($str);
$str = str_replace('  ', ' ', $str); //replace two space to single space
$str_array = explode(" ", $str);

答案 3 :(得分:0)

我能够使用$str = preg_replace('/[^(\x20-\x7F)]*/','', $str);

解决此问题

Source

        $str = strip_tags($str);
        $str = trim($str);
        $str = preg_replace('/ HYPERLINK "[^"]*" /', '', $str);
        $str = preg_replace('/\s+/', ' ', $str);
        $str = preg_replace('/[^(\x20-\x7F)]*/','', $str);