2011-02-02 14 views
2

こんにちは人々:) 私はstrpos()を使用して文中のすべての単語を検索しようとしています。しかし、現時点では、それはちょうど別の単語の一部であれば、その単語を見つけることもできます。たとえば:strpos()で全単語を検索

$mystring = "It's a beautiful morning today!"; 
$findme = "a"; 

$pos = strpos($mystring, $findme); 

この例では、それは見つけるだろう「」言葉に「」(それが何をすべきと)だけでなく、「美しい」にすると、その中にAがあるため。

どのように単語全体を見つけることができますが、それは他の単語の一部ではないのですか?

+0

strposを使用する必要がありますか? – Leigh

+0

これを行うには、strpos()を使うよりもずっと優れた方法があります。 –

答えて

2

使用正規表現を使用することです、このような単語境界の区切り\b、と:

$mystring = "It's a beautiful morning today!"; 
preg_match_all('/\ba\b/', $mystring, $matches, PREG_OFFSET_CAPTURE); 
var_dump($matches); 

戻り

array(1) { 
    [0]=> 
    array(1) { 
    [0]=> 
    array(2) { 
     [0]=> 
     string(1) "a" 
     [1]=> 
     int(5) 
    } 
    } 
} 
+0

Hey Xavier。私はこの解決策を働かせることができませんでした。他の解決策はありますか? –

+0

私が知った!私はちょうど単語の周りにスペースを入れれば、それは仕事をした。御時間ありがとうございます! ;) –

+1

文字列の最初か最後の単語であれば、スペースを置いてもそれを検出しません。 – AbiusX

9

これは、正規表現のための仕事です:

$regex = '/\b'.$word.'\b/'; 

は基本的に、それはワード境界(\bビット)に囲まれた文字を見つけることです。だから、位置を見つけるために:

preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE); 
$pos = $match[0][1]; 
-1

正規表現は、初心者のための別の方法では困難であると私はそれが最善ではない認め、
$ findme =「」

+0

私は知った!私はちょうど単語の周りにスペースを入れれば、それは仕事をした。御時間ありがとうございます! ;) –

+1

その答えは間違っています。それが最初のものか最後のものかは単語を見つけられません。 – ElChupacabra

+0

@ElChupacabra "...と私はそれが最高ではないと認めます" – Steve