Php 如何从数组中删除空白字符串?

Php 如何从数组中删除空白字符串?,php,arrays,string,Php,Arrays,String,我从一个网站上抓取了一个格式非常糟糕的字符串,并将其转换为数组。现在tt包含一些空字符串或仅包含空格字符串,我想删除这些字符串,但它不起作用。 我已经尝试应用过滤器($array)但没有成功。我还尝试手动迭代和过滤这些元素,但根本不起作用。似乎我无法访问以下元素: foreach($array as $elem){ if($elem == " " || $elem == "") echo "Want access this: " . elem . "<br&g

我从一个网站上抓取了一个格式非常糟糕的字符串,并将其转换为数组。现在tt包含一些空字符串或仅包含空格字符串,我想删除这些字符串,但它不起作用。 我已经尝试应用过滤器($array)但没有成功。我还尝试手动迭代和过滤这些元素,但根本不起作用。似乎我无法访问以下元素:

foreach($array as $elem){
     if($elem == " " || $elem == "")
          echo "Want access this: " . elem . "<br>";
          //No Output
}
编辑:感谢您的提示,但没有任何效果,因为问题是空白字符串的长度不同。根据前面的回答,我现在试图用preg_match(“/\s{2,}/”,$val)捕捉这些元素它很好用。有什么想法吗?

你可以使用数组过滤器

function odd($var)
{
    return(trim($var) != "");
}


$array = array(1, " ", 2, " ");
print_r(array_filter($array, "odd"));
问候

$filtered = array_filter($array, function($v,$k) {
    return $v !== "";
}, ARRAY_FILTER_USE_BOTH);
首先请参见:
if($elem==“”| |$elem==“”)

对我来说,似乎你写了两次相同的比较

关于您的阵列清理,您可以尝试以下方法:

foreach ($array as $key => $val) {
    if (preg_match('/^\s*$/', $val) OR $val === NULL) {
        unset($array[$key]);
    }
}
$array=数组值($array)

该代码从数组中删除
NULL
、不包含任何内容或仅包含空格等的条目。 由于您的数组已编制索引,因此我添加了最后一行,该行使用新的连续索引再次构建数组,以便在其中没有删除条目的漏洞


希望有帮助。

如前所述,使用
array\u filter()
trim()
过滤掉空字符串或仅包含空格的元素:

$filtered = array_filter($array, function ($element) {
    return is_string($element) && '' !== trim($element);
});
有关参考,请参阅:


请更改数据。这太敏感了!我很抱歉。我在爪哇-mode@PhilippSander不用担心:)@PhilippSander这不是
java
这是
php
:)
不是空字符串。而且
string(23)“
很奇怪。在
中应该有
23个
字符,但只有一个。同样对于
string(42)“21.06.2017”
a.s.o.总是留下解释-没有人从复制和粘贴中学习:pit在文档中你真的认为人们在复制和粘贴后会用谷歌搜索它吗?始终添加一个参考链接并进行解释-获得投票的简单方法:)不用担心:):这是一个带有数组过滤器的解决方案吗?
$filtered = array_filter($array, function ($element) {
    return is_string($element) && '' !== trim($element);
});