你好人:) 我正在尝试使用strpos()来查找句子中的整个单词。但此刻,如果它只是另一个词的一部分,它也会找到这个词。例如:
$mystring = "It's a beautiful morning today!";
$findme = "a";
$pos = strpos($mystring, $findme);
在这个例子中,它会在单词“a”(它应该这样做)中找到“a”,但也会在“beautiful”中找到,因为其中有一个a。
我怎样才能找到整个单词而不是其他单词的一部分?
答案 0 :(得分:9)
这是正则表达式的工作:
$regex = '/\b'.$word.'\b/';
基本上,它找到了由字边界(\b
位)包围的字母。所以,找到位置:
preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE);
$pos = $match[0][1];
答案 1 :(得分: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)
}
}
}
答案 2 :(得分:-1)