Php 使用strpos()查找整个单词

Php 使用strpos()查找整个单词,php,strpos,Php,Strpos,大家好:) 我试图用strpos()来找出一个句子中的完整单词。但目前,如果这个词只是另一个词的一部分,它也会找到这个词。例如: $mystring = "It's a beautiful morning today!"; $findme = "a"; $pos = strpos($mystring, $findme); 在这个例子中,它会在单词“a”中找到“a”(正如它应该做的),但在“beautiful”中也会找到“a”,因为其中有一个a 我怎样才能只找到整个单词,而不是其他单词的一

大家好:) 我试图用strpos()来找出一个句子中的完整单词。但目前,如果这个词只是另一个词的一部分,它也会找到这个词。例如:

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

$pos = strpos($mystring, $findme);
在这个例子中,它会在单词“a”中找到“a”(正如它应该做的),但在“beautiful”中也会找到“a”,因为其中有一个a


我怎样才能只找到整个单词,而不是其他单词的一部分呢?

这是正则表达式的工作:

$regex = '/\b'.$word.'\b/';
基本上,它是查找由单词边界(
\b
位)包围的字母。因此,要找到位置:

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

正则表达式对初学者来说很难,另一种方法是使用

$findme=“a”

使用带有单词边界分隔符
\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)
    }
  }
}

有比使用strpos()更好的方法来实现这一点,那么为什么要限制呢?嘿,Xavier。我无法让这个解决方案工作。你有其他解决办法吗?我发现了!如果我在单词周围加上空格,它就完成了工作。谢谢你抽出时间!;)在其周围放置空格不会检测到它是否是字符串的第一个或最后一个字。我发现了!如果我在单词周围加上空格,它就完成了工作。谢谢你抽出时间!;)这个答案是错误的。无论是第一个还是最后一个,它都找不到单词。@ElChupacabra“…我承认这不是最好的”错误的答案不仅仅是“不是最好的”。无效的解决方案可能被标记为“非最佳”。错误的答案就是错误的答案。如果你不确定单词的结尾是什么?。在我的例子中,它是一个youtube url,可能附带了一个随机查询字符串,我只需要它开头和结尾的位置。