我想检查用户是否输入了列表中没有的单词。
例如,我们要求用户包括“apple”,“orange”,“cake”
如果用户输入“我吃橙子”,则不会发生任何事情。
但如果用户输入“我吃一个汉堡包”,就会发生一些事情。 (希望你理解......)
我知道它可以通过使用strpos来完成,但它只能使用一个单词。我还在stackoverflow上搜索了关于使用OR ||的其他示例,但仍然无效。
编辑,这是实际代码:
我想阻止用户使用其他电子邮件服务(只有google,yahoo和outlook)
第一项工作,但其他两项工作无效......
<?php
if (strpos($email, 'gamil.com') == false) {
$_SESSION["register_stat"] = "email";
}
?>
<?php
if (strpos($email, 'gamil.com') || strpos($email, 'outlook.com') || strpos($email, 'yahoo.com') == false) {
$_SESSION["register_stat"] = "email";
}
?>
<?php
if (strpos($email, 'gamil.com') == false || strpos($email, 'outlook.com') == false|| strpos($email, 'yahoo.com') == false) {
$_SESSION["register_stat"] = "email";
}
?>
答案 0 :(得分:1)
另外2个不起作用......你的意见是什么?如果找到针,strpos将返回0。
返回针相对于针的位置 haystack字符串的开头(与offset无关)。另请注意 字符串位置从0开始,而不是1。
您使用没有== false
和== false
的条件,这是故意的吗?
您可能希望将== false
更改为=== false
,因为== false
也等于0.
有关这些运营商的更多信息,请访问: Comparison Operators ¶
$ a == $ b如果在类型杂耍后$ a等于$ b,则等于TRUE。
$ a === $ b如果$ a等于$ b,则相同为TRUE,且它们属于同一类型。
当你的strpos
返回0时,就会发生这种情况:
(int) 0 == false
将返回true。它们不是同一类型,但具有相同的价值。
(int) 0 === false
将返回false。它们的类型不同,即使值相同。