2016-04-09 19 views
0

Neredeyse sms sorunumu çözdüm ve işe yaramayacak kadar küçük bir soruna daralttım.php dizilimi içindeki ifadenin konumunu bulun php

İşte ne var:

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 */ 

Yani SMS uygulaması şimdi bir cümle okumak ve anahtar kelimeyi ter bulabilirsiniz. Sorun şu ki, anahtar kelime dizisinde nerede olduğu ile ilgili kelimenin konumunu da almalıyım. Numarayı doğru konuma manuel olarak değiştirirsem ve bu anahtar kelimeyi içeren bir metin gönderirse kusursuz çalışır.

Ne yazık ki dinamik bir iğneyi kabul edemediğinden array_search çalışmıyor. Hangi anahtar kelime bulunduğuna göre dizi konumu otomatik olarak doldurmak için herhangi bir yolu var mı? Yukarıdaki kodumda, yapmaya çalıştığım şeyi (umarım) görebilirsiniz.

+0

olası yinelenen: http://stackoverflow.com/questions/18680925/find-the-position-of-a-word-in-a-string ve http://stackoverflow.com/ sorular/11398782/bul-in-tam-kelime-in-in-string-in- –

+0

_ “Ne yazık ki, array_search, dinamik bir iğne kabul edemediği için çalışmıyor” _ - bu ne anlama geliyor? “Dinamik iğne” nedir? – CBroe

+0

Bu: array_search özellikle aranacak kesin bir değeri bildirdiğim array_search ('dog', '$ keyword) ifadesinde çalışır. Array_search'in, içinde '$ word' örneğimde, metne eklenmiş olan anahtar kelimeyi aramasını istediğim durumda, bu benim tercih edilmeyen array_search ($ word, $ anahtar kelime) işlevini yerine getirecektir. Bu durumda iğne, dinamik olurdu çünkü arama için statik bir değer söylemiyorum çünkü arandığım kelimeye bağlı olarak değişecektir. – Sam

cevap

0

Çözülen sorun. Dinamik olarak yapılabilir.

$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();} 
ait