2016-12-29 2 views
0

Я пытаюсь удалить некоторые конкретные слова из заданной входной строки, которая разделена на слова. Но из массива разделенных слов конкретные слова не заменяются.Удалить слова из строки в PHP

$string = $this->input->post('keyword'); 
echo $string; //what i want is you 

$string = explode(" ", $string); 

$string = array_values(array_filter(preg_replace('/[^A-Za-z0-9\']/','', $string))); 

$omit_words = array(' the ',' i ',' we ',' you ',' what ',' is '); 

$keyword = array_values(array_filter(str_ireplace($omit_words,'',$string))); 
print_r($keyword); // Array ([0] => what [1] => i [2] => want [3] => is [4] => you) 

Ожидаемый результат:

Array ([0] => want) 

Я не могу узнать, что случилось в этом. Пожалуйста, помогите мне решить эту проблему.

+0

Если вам нужно только заменить (удалить) эти слова, то на основе регулярное выражение выглядит подход Полегче. Подход, основанный на взломе/массиве, имеет смысл только тогда, когда вам действительно нужны слова как массивы впоследствии, а не как строка. – arkascha

ответ

3

Прежде всего удалите пробелы из строки в массиве $omit_words. Используйте это использование array_diff: Если вы хотите переиндексировать вывод, вы можете использовать array_values.

$string='what i want is you'; //what i want is you 

$string = explode(" ", $string); 

$omit_words = array('the','i','we','you','what','is'); 
$result=array_diff($string,$omit_words); 

print_r($result); // 
+0

perfect ... Спасибо buddy :) – Shihas

+0

@RazibAlMamun Спасибо за комментарий. Я уже это сделал :) – Shihas

+0

ok man, некоторые новые программисты следуют некоему временному коду. hahahaha –

1

Вы можете использоваться array_diff, а затем array_values для индексации массива сброса.

<?php 
$string = $this->input->post('keyword'); 
$string = explode(" ", $string); 

$omit_words = array('the','i','we','you','what','is'); 
$result = array_values(array_diff($string,$omit_words)); 

print_r($result); //Array ([0] => want) 
?> 
+0

Спасибо .. :) (Y) – Shihas

0

Попробуйте

<?php 
$string="what i want is you"; 
$omit_words = array('the','we','you','what','is','i'); // remove the spaces 
rsort($omit_words); // need to sort so that correct words are replaced 
$new_string=str_replace($omit_words,'',$string); 

print_r($new_string); 
+0

ожидаемый результат должен быть массивом не строка –

1

Вы должны удалить пробелы из omit_words:

$string = "what i want is you"; 

$string = explode(" ", $string); 

$string = array_values(array_filter(preg_replace('/[^A-Za-z0-9\']/','', $string))); 

$omit_words = array('the','is','we','you','what','i'); 

$keyword = array_values(array_filter(str_ireplace($omit_words, '', $string))); 
print_r($keyword); // Array ([0] => want) 
+0

Нет брата .. Если я использую этот код, тогда слово ** «пожелание» ** также будет отклонено, поскольку оно содержит ** «есть» * * – Shihas

+0

теперь его прекрасный. – Shihas

Смежные вопросы