2016-09-17 7 views
1

私はここstartsWith() and endsWith() functions in PHPマッチ初め

のstartsWith()関数を使用しています。しかし、私はそれが唯一のフル言葉を一致させたいです。

現在のところ、それは次のように一致します。

hi 
high 
hiho 

しかし、私は唯一の入力がある場合は、「こんにちは」ではなく、他の二つの言葉一致するようにしたい:

hi there 
+0

使用 'にpreg_replace()'つまり – momouu

+0

は、あなたが 'hi'かどうかを確認したいが単語はシーケンス内の別個の単語として出現するか? – RomanPerekhrest

答えて

2

あなたはそれを一致させることができますこの正規表現で:|^HI \ sは| \市\ S |/^こんにちは$ \ $市/

$test = ['hi', 'hi there', 'high', 'hiho']; 
$pattern = '/^hi$|^hi\s|\shi\s|\shi$/'; 
$matches = []; 

foreach ($test as $t) { 
    var_dump($t); 
    preg_match($pattern, $t, $matches); 
    var_dump($matches); 
} 

パーツ説明:

  • ^こんにちは$ - あなたの刺し傷は、 "HI"
  • ^HI S \されて - あなたの文字列がhiで始まる: "HI"
  • \市\ sの - どこかの文字列で "こんにちは" があります
  • \市$ - あなたの文字列が「ハイ」

これらの部品は、パイプと一緒に接着されているで終わる|どの正規表現の手段では、「または」、そう式全体が部品

のいずれかに一致さ「を」
+0

パターン '/^hi $ |^hi \ s /'を使用しましたが、その場合は 'hi'と 'hi there'と一致しません。 – John

+0

Nevermind私はタイプミスをしました。仕事をしているようだ。 – John

0

全体をテストするとhi言葉に対するテキスト、これを試してみてください。

<?php  
preg_match_all('@hi\[email protected]', 
     "hi me 
     hi there 
     high 
     highlander 
     historic 
     hire", 
$matches); 

var_dump($matches); 

enter image description here

テストは - ここに変更します。https://regex101.com/r/tV3jR6/1