检测字符串中+ - "*的使用

Nes*_*Man 0 php strpos

这是我的测试查询:

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)

我究竟做错了什么?我想让它随时传递+或 - 在字符串中.

谢谢

Mat*_*att 7

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上面的长篇陈述.