检查并查看$\u POST是否包含特定的PHP字符串
我现在正试图弄清楚如何使用php检查并查看$_POST['email']是否包含特定字符串 我现在试过了检查并查看$\u POST是否包含特定的PHP字符串,php,Php,我现在正试图弄清楚如何使用php检查并查看$_POST['email']是否包含特定字符串 我现在试过了 }elseif(empty($_POST['email']) || !strpos('@gmail.com', $_POST['email'])) { 输出表示strpos不包含结尾,但它确实包含结尾。我现在做错了什么,或者有其他的方法吗 我只希望人们能够注册gmail,而不是任何其他未知的垃圾邮件帐户。如果您想尝试其他方法,而不是strpos,您可以执行以下操作: if (empty($
}elseif(empty($_POST['email']) || !strpos('@gmail.com', $_POST['email'])) {
输出表示strpos不包含结尾,但它确实包含结尾。我现在做错了什么,或者有其他的方法吗
我只希望人们能够注册gmail,而不是任何其他未知的垃圾邮件帐户。如果您想尝试其他方法,而不是
strpos
,您可以执行以下操作:
if (empty($_POST['email'] || array_pop(explode('@', $email)) != "gmail.com") {
// Do something if the email is empty or the domain is not "gmail.com"
}
您最好使用
preg\u match
和\b
模式匹配,而不是strpos
。另外,strpos
将匹配GMAIL
如果您不需要大写字母,您可以使用stripos
,它将匹配为不区分大小写,仅供参考
使用strpos
将匹配gmail.comm
,而不是预期的gmail.com
,我相信您不希望这样。用户可以很好地输入email@gmail.comm
并且仍然被认为是有效的,我确信您不想要的其他东西,这将在尝试发回邮件或使用自动回复程序时失败
- 来自手册-基于示例2
<?php
if(isset($_POST['submit'])) {
$contains = "@gmail.com";
$email = $_POST['email'];
// or use (as outlined below)
// if(isset($_POST['email']) && preg_match("/\b(@gmail.com)\b/", $_POST['email']))
if(isset($_POST['email']) && preg_match("/\b($contains)\b/",$email )) {
echo 'yey! gmail!';
} else {
echo 'invalid input!';
}
}
?>
<form method="POST">
<input type="text" name="email" />
<input type="submit" name="submit" />
</form>
您应该使用
strpos(..)==false
而不是!strpos(..)
,因为它也可以返回0作为索引。可能重复。@md_5检查我在下面发布的内容。您最好使用preg_match()对于这个,IMO,这是更好的,无论如何我希望当OP回到网上,应该考虑选择这一个。@幽灵感谢幽灵。)感谢弗莱德@ II-今天的帮助,我今天弄清我的错误和困惑。使用PrimgMatter,因为你走得更远和精确的方式来做这件事,为我省去了很多麻烦。f将来可能发生的事情。和@Ghost,因为我无法在一篇帖子中添加超过1个额外用户:)
if(isset($_POST['email']) && preg_match("/\b(@gmail.com)\b/", $_POST['email']))