2016-12-29 4 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

완벽한 ... Thanks 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

형제가 아닙니다 ..이 코드를 사용하면 ** "wish"**에 ** "is"가 포함되어 있기 때문에 거부됩니다. * * – Shihas

+0

이제 완벽합니다. – Shihas