在PHP中的var字符串中找到确切的单词

时间:2015-05-08 18:04:50

标签: php strpos

我试图在字符串中找到一个确切的单词。

示例:

$word = "Many Blocks";

if (strpos($word, "Block")){
  echo "You found 1 Block";
}

if (strpos($word, "Blocks")){
  echo "You found many Blocks";
}

这里的问题是,如果是真的..我只需要找到相同的单词..

3 个答案:

答案 0 :(得分:6)

正如Jay Blanchard所说,你需要以下列方式使用正则表达式: -

$word = "Many Blocks";
if ( preg_match("~\bBlocks\b~",$word) )
  echo "matched";
else
  echo "no match";

答案 1 :(得分:2)

您的代码将使用第二次搜索的偏移量和其他一些更改。

while(document.getElementById("sound1").currentTime<16){
}
//insert code here

通过使用strpos()偏移量,您可以继续循环直到找不到该词。

$result = 'You found no blocks';
$position = strpos($word, "Block");
if ($position !== false){
  $result = "You found 1 Block";
  if (strpos($word, "Blocks",$position + 1)){
    $result = "You found many Blocks";
  }
}
echo $result;

这个代码很简单,但速度较慢:

  $found = 0;
  $offset = 0;
  while(true){
    $position = strpos($word,'Block',$offset );
    if ($position  === false){break;}
    $found++;
    $offset  = $position  + 1;   // set offset just beyond the current found word
  }
  echo "Found:  $found";

答案 2 :(得分:1)

你可以用这样的正则表达式来实现:

if(preg_match("/Block(\s|$|\.|\,)/", $string)) 

这样可以找到&#34; Block&#34;后跟空格或点或逗号或字符串结尾。