2016-04-09 15 views
0

私はほとんど私のSMSの問題を把握し、私は働くことができないような小さな問題に絞っている。ここで配列のPHPの単語の位置を見つける

は、私が持っているものです。

include('Services/Twilio.php'); 

/* Read the contents of the 'Body' field of the Request. */ 
$body = $_REQUEST['Body']; 

/* Remove formatting from $body until it is just lowercase 
characters without punctuation or spaces. */ 

$result = rtrim($body); 
$result = strtolower($result); 
$text = explode(' ',$result); 
$keyword = array('dog','pigeon','owl'); 
$word = array_intersect($keyword,$text); 
$key = array_search($word, array_keys($keyword)); 

$word[$key](); 
/*  ^^this is the issue */ 

だから、SMSアプリは今の文章を読んで、キーワードに汗を見つけることができません。問題は、キーワード配列のどこに関連して単語の位置を持つ必要があるかです。数字を正しい位置に手動で変更して、そのキーワードを含むテキストを送信すると、完璧に機能します。

残念ながらarray_searchは動的針を受け入れることができないため動作しません。どのようなキーワードが見つかったかに基づいて配列の位置を自動的に設定する方法はありますか?上記の私のコードでは、私がしようとしていることを(うまくいけば)見ることができます。

+0

の可能性の重複:http://stackoverflow.com/questions/18680925/find-the-position-of-a-word-in-a-string と http://stackoverflow.com/質問/ 11398782 /文字列の正確な検索 - –

+0

_残念ながら、array_searchは動的針を受け入れることができないため動作しません "_ - それはどういう意味ですか? 「動的針」とは何ですか? – CBroe

+0

これは、array_searchは式array_search( 'dog'、 '$ keyword)で動作します。ここでは、検索する正確な値を指定します。 array_searchが、私の例である '$ word'の中でテキスト化されているキーワードを探すことができれば、それは私の好みのarray_search($ word、$ keyword)を作るでしょう。これはうまくいきません。この場合の針は動的です。なぜなら、検索する静的な値に何がテキスト化されているかによって検索する単語が変わるからです。 – Sam

答えて

0

解決済みの問題。これは動的に行うことができます。

$body = $_REQUEST['Body']; 

    /* Remove formatting from $body until it is just lowercase 
    characters without punctuation or spaces. */ 

    $result = rtrim($body); 
    $result = strtolower($result); 
    $text = explode(' ',$result); 
    $keyword = array('listing','pigeon_show','owl'); 
    $word = array_intersect($keyword,$text); 
    $key = key($word); 

if ($word){ 
    $word[$key]();} 
else 
    {index();}