这是我的测试查询:
if (strpos($q, '+') > 0 || strpos($q, '-') > 0 || strpos($q, '"') > 0 || strpos($q, '*') > 0) {
print ("Advanced search operators are being used");
} else {
print ("Advanced search operators are NOT being used");
}
$q = '-lavender' fails
$q = 'burn -lavender' passes
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我想让它随时传递+或 - 在字符串中.
谢谢
strpos()返回false如果没有找到该值,否则返回位置开始0.
您的比较应该检查是否返回值!== false:
if (strpos($q, '+') !== false || strpos($q, '-') !== false || strpos($q, '"') !== false || strpos($q, '*') !== false)
Run Code Online (Sandbox Code Playgroud)
要么
你可以使用regular expression:
preg_match('/[-+*"]+/', $q);
Run Code Online (Sandbox Code Playgroud)
UPDATE
NikiC只是引起strpbrk()了我的注意,它将完美适合你:
if (strpbrk ( $q, '-+*"') !== false)
Run Code Online (Sandbox Code Playgroud)
这相当于if上面的长篇陈述.