2017-05-26 7 views
0

PHPを使用して、事前定義された文を文字列で認識し、 'target'に配置された単語を出力します。私はだと思います。これはおそらくregexを使って行うことができますが、私はそれを書く知識がありません。PHP(Regex?)を使用して定義済みの文から値を認識して取得する

例文:

  1. は空港ターゲットが配置されていますか?
  2. にはいくつの空港がありますか
  3. のフライトはどれくらいですか?のターゲットはですか?

(配列として)所望の出力例:

  1. 0 =>ヒースロー
  2. 0 =>フランス
  3. 0 =>バルセロナ、1 =>パリ

答えて

0

はい、正規表現を使用する:preg_match

$input = 'where is the airport heathrow located?'; 

$templates = [ 
    '/where is the airport (.*) located\?/i', 
    '/how many airports are there in (.*)\?/i', 
    '/how long does a flight between (.*) and (.*) take?/i', 
]; 

foreach ($templates as $template) { 
    if (preg_match($template, $input, $matches)) { 
     var_dump($matches[1]); 
    } 
} 

出力:あなたのテンプレートで

string(8) "heathrow" 

、あなたの「テンプレート」の「変数」を囲むように、括弧を使用しています。これは、キャプチャサブグループを定義します。これは、PHPがpreg_matchルーチンの一部として機能しなくなります。括弧の中には、.*を使用しています。これはあまりにも容認しすぎるかもしれません。例えば「\w+」のように「1つ以上の単語のような文字」を意味する文字列を試してみてください。

関連する問題