регулярное выражение — зачем останавливать удаление слова быть нулевым? (РНР)

Я начинающий программист НЛП на PHP.
Я просто хочу поговорить об удалении стоп-слов.

это моя практика:

У меня есть следующее объявление переменной $words = "he's the young man";

а затем я удаляю общие слова, как это

 $common_words = $this->common_words();
$ncwords = preg_replace('/\b('.implode('|',$common_words).')\b/','',$data);
// I have save the array common_words in another function

и я взорвать мои не общие слова

$a_ncwords=explode(" ", $ncwords);

Но когда я печатаю $a_ncwords, вот так print_r($a_ncwords);

Я получаю такой результат:

Array ( [0] => [1] => [2] => young [3] => man )

почему index[0] а также index[1] значения массива null?

0

Решение

Удалите пустые элементы массива.

Чтобы успокоить тех, кто сказал, что не ответил на ваш вопрос:

Ваше preg_replace заменяет слова на null, и когда вы взрываетесь, потому что ваше регулярное выражение выключено, эти нулевые значения создаются в вашем массиве $a_ncwords когда ты explode,

$a_ncwords = array_filter($a_ncwords);
2

Другие решения

Потому что вы заменяете слова пустой строкой. Элементы массива все еще существуют, теперь они просто пусты.

Вы должны удалить их из массива, если они пусты. Вы можете сделать это так:

array_filter($ncwords, function($item) { return !is_null($item); });
3

По вопросам рекламы [email protected]