3

こんにちは人々:)私は文中の単語全体を見つけるためにstrpos()を使用しようとしています。しかし、現時点では、それが別の単語の一部である場合は、その単語も検出されます。例えば:

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

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

この例では、単語「a」に「a」が含まれていますが、aが含まれているため、「美しい」にも含まれています。

他の単語の一部である場合ではなく、単語全体のみを検索するにはどうすればよいですか?

4

3 に答える 3

10

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

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

\b基本的には、単語の境界(ビット)で囲まれた文字を検索します。だから、位置を見つけるために:

preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE);
$pos = $match[0][1];
于 2011-02-02T21:03:49.603 に答える
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)
    }
  }
}
于 2011-02-02T21:10:08.413 に答える
0

正規表現は初心者には難しいですが、別の方法では、それが最善ではないことを認めます。
$ findme="a"を使用することです。

于 2011-02-02T21:09:51.163 に答える