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

完璧...ありがとうございました:) – Shihas

+0

@RazibAlMamunコメントありがとうございます。私はすでにそれをしました:) – Shihas

+0

ok男、いくつかの新しいプログラマはいくつかのタイムコードに従います。 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

あなたはomit_wordsからスペースを削除する必要があります。この

<?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

をお試しください:

$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

No brother ..もし私がこのコードを使用すると、** "wish" **は** "is" * – Shihas

+0

今は完璧です。 – Shihas

関連する問題