2017-09-14 13 views
-4

に交換してください。以下のような いろいろ書い:私は、文字列を持っている文字列内のテキストを検索し、配列

function find_animal_in_string($string) 
{ 
    // If $string contains one of the element in array print this array value 
    // how to do that? 
} 

だから私の好適な結果は次のようになります。

echo $this->find_animal_in_string('I love my leon and other animals.') //echo cat 
echo $this->find_animal_in_string('I do not like teddys in mountains.') //echo bear 

すると、あなたの助けに感謝します。私はstrposとarray_key_existsを試しましたが、私にとってはうまくいきませんでした。

function find_animal_in_string($string) 
{ 
// global $categories 
     $matches = "/(".join("|", array_keys($categories)).")/"; 
     preg_match($matches, $string, $hit); 
     return $categories[$hit[0]]; 
} 

と$の可視性を忘れないでください:

+0

ここでの質問は何ですか? – Calimero

+0

その結果を出力する関数を作る方法は? – Tikky

+0

関数を作成し、結果を出力しますか?何か試しましたか? – Calimero

答えて

1

あなたはまた、正規表現でそれを行うことができます

foreach($categories as $key => $value){ 


if(strpos($string,$key) == true) 

    echo $value; 


} 
+0

が配列に 'leon'を見つけることができず、これは' teddys'と 'teddy'の比較で失敗したため失敗しました。私が "== true"を "!== false"と覚えた後に、OPが素敵な配列を持っていれば、この解決策はうまくいくはずですが、 – IsThisJavascript

+0

が機能します。貢献のThx – Tikky

1
function find_animal_in_string($string) 
{ 
// If $string contains one of the element in array print this array 
// how to do that? 
$categories = array(
'kitty' => 'cat', 
'teddy' => 'bear', 
'someting' => 'other', 
); 
foreach($categories as $cle => $value){ 
    if(strpos($string,$cle) != FALSE){ 
    echo $value; 
    } 
} 
} 

    find_animal_in_string('I do not like teddy in mountains.');//echo bear 
+0

'global $ categories'を渡して、配列を関数スコープから取得することができます。しかし、OPが提供する例は 'teddys'で' teddy'ではないので、これはOPの最初の 'leon'の例を渡さないので失敗します – IsThisJavascript

+0

彼は配列$ categoriesにleonとteddysを追加する必要があります。唯一の例です –

+0

ありがとうございます、私は "!== FALSE"のために "!= FALSE"を変更しました。これは、最初の要素 – Tikky

1

存在するかの文字列をチェックするstrposを使用することができますカテゴリ

+0

のためにもうまくいきます。 – Tikky

関連する問題