strops不包含PHP中的特定多个单词

时间:2017-05-05 07:55:55

标签: php strpos

我想检查用户是否输入了列表中没有的单词。
例如,我们要求用户包括“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";
}
?>

1 个答案:

答案 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。它们的类型不同,即使值相同。