【发布时间】:2012-03-15 21:50:31
【问题描述】:
我正在努力使用一个简单的函数,该函数循环遍历一个数组并仅当它在数组的一个元素中找到给定的子字符串时才返回 true。
出于某种原因,我总是得到false... 即使$email 参数包含有效域之一。例如:scoobydoo@domain1.com。
function check_email($email) {
$whitelist_domains = array(
'@domain1.com',
'@domain2.com',
'@domain3.com'
);
$output = FALSE;
foreach ($whitelist_domains as $domain) {
$pos = strpos( $email, $domain );
if ( $pos ) {
$output = TRUE;
}
}
return $output;
}
【问题讨论】:
-
strpos 可能返回 0,即 == false;使用 if($pos !== false) 代替
-
您需要对
$pos进行严格比较,因为如果它在字符串的开头找到它,您的测试将失败,因为$pos = 0。改为if($pos === false)
标签: php if-statement foreach boolean strpos