PHP strpos - 只搜索完整的单词
PHP strpos - search only full words
如果我有一个包含单词 Company 的字符串并且我希望只搜索完整的单词,例如 any,我会遇到使用strpos()的一个问题,如下:
if (strpos($desc, $row['phrase']) !== false )
{
// action
}
此脚本将 return TRUE,因为 Company 包含一个子字符串:any 这是无用的,因为脚本需要检测只有完整的单词。
公司上班
不包含单词:any
但是
是否有任何变化
确实包含单词:"any"。我如何编辑 strpos 函数以仅搜索完整单词,即不是其中的一部分?
谢谢。
试试这个正则表达式。
https://regex101.com/r/Evd3iF/1
$re = '/\b[Aa]ny\b/';
$str = 'Company any any. Any, ';
If(preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0)){
//string contains word
}
// Print the entire match result
var_dump($matches);
可以用
$pattern = "/\b[" . strtoupper(Substr($word,0,1)) . strtolower(Substr($word,0,1)) . "]" . Substr($word,1);
请注意我在 phone 上写了这个答案,所以我可能在上面的模式中犯了错误
如果我有一个包含单词 Company 的字符串并且我希望只搜索完整的单词,例如 any,我会遇到使用strpos()的一个问题,如下:
if (strpos($desc, $row['phrase']) !== false )
{
// action
}
此脚本将 return TRUE,因为 Company 包含一个子字符串:any 这是无用的,因为脚本需要检测只有完整的单词。
公司上班
不包含单词:any
但是
是否有任何变化
确实包含单词:"any"。我如何编辑 strpos 函数以仅搜索完整单词,即不是其中的一部分?
谢谢。
试试这个正则表达式。
https://regex101.com/r/Evd3iF/1
$re = '/\b[Aa]ny\b/';
$str = 'Company any any. Any, ';
If(preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0)){
//string contains word
}
// Print the entire match result
var_dump($matches);
可以用
$pattern = "/\b[" . strtoupper(Substr($word,0,1)) . strtolower(Substr($word,0,1)) . "]" . Substr($word,1);
请注意我在 phone 上写了这个答案,所以我可能在上面的模式中犯了错误