Я пытаюсь извлечь все слова из строки в массив, но у меня возникают некоторые проблемы с пробелами (
).
Вот что я делаю:
<code>//Clean data to text only
$data = strip_tags($data);
$data = htmlentities($data, ENT_QUOTES, 'UTF-8');
$data = html_entity_decode($data, ENT_QUOTES, 'UTF-8');
$data = htmlspecialchars_decode($data);
$data = mb_strtolower($data, 'UTF-8');
//Clean up text from special chrs I don't want as words
$data = str_replace(',', '', $data);
$data = str_replace('.', '', $data);
$data = str_replace(':', '', $data);
$data = str_replace(';', '', $data);
$data = str_replace('*', '', $data);
$data = str_replace('?', '', $data);
$data = str_replace('!', '', $data);
$data = str_replace('-', ' ', $data);
$data = str_replace("\n", ' ', $data);
$data = str_replace("\r", ' ', $data);
$data = str_replace("\t", ' ', $data);
$data = str_replace("\0", ' ', $data);
$data = str_replace("\x0B", ' ', $data);
$data = str_replace(" ", ' ', $data);
//Clean up duplicated spaces
do {
$data = str_replace(' ', ' ', $data);
} while(strpos($data, ' ') !== false);
//Make array
$clean_data = explode(' ', $data);
echo "<pre>";
var_dump($clean_data);
echo "
";
Это выводит:
array(58) {
[0]=>
string(5) " "
[1]=>
string(5) " "
[2]=>
string(11) "anläggning"
[3]=>
string(3) "med"
[4]=>
string(3) "den"
[5]=>
string(10) "erfarenhet"
[6]=>
string(3) "som"
}
Если я проверяю источник для вывода, я вижу, что первые 2 значения массива
.
Как бы я ни старался, я не могу удалить это из строки. Любые идеи?
ОБНОВЛЕНИЕ:
После некоторой настройки кода мне удается получить следующий вывод:
array(56) {
[0]=>
string(1) "�" //Notice change. Instead of string length 5 it now says 1. But still its garbage.
[1]=>
string(1) "�"
[2]=>
string(11) "anläggning"
[3]=>
string(3) "med"
[4]=>
string(3) "den"
[5]=>
string(10) "erfarenhet"
[6]=>
string(3) "som"
[7]=>
string(5) "finns"
[8]=>
string(4) "inom"
Спасибо!
ОТВЕТ (для ленивых людей):
Даже если это немного иной подход к проблеме, и он никогдадействительно отвечает, почему у меня были проблемы, которые у меня были выше (например, остаток
и другие лишние странные пробелы), мне это нравится, и это намного лучше, чем мой оригинальный код.
Спасибо всем, кто внес свой вклад в это!
<code>//Clean data to text only
$data = strip_tags($data);
$data = html_entity_decode($data, ENT_QUOTES, 'UTF-8');
$data = htmlspecialchars_decode($data);
$data = mb_strtolower($data, 'UTF-8');
//Clean up text from special chrs
$data = str_replace(array("-"), ' ', $data);
$clean_data = str_word_count($data, 1, 'äöå');
echo "<pre>";
var_dump($clean_data);
echo "
";