Удаление белых пробелов/пустых значений из массива PHP

Я разрабатываю приложение для подсчета слов, и я использую следующий код для загрузки слов в массив.

$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 ответа

Я смог исправить эту проблему с помощью $str = preg_replace('/[^(\x20-\x7F)]*/','', $str);

Источник

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


array_map элементы массива с помощью trim by 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


Попробуй это...

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


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

licensed under cc by-sa 3.0 with attribution.