首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:检查字符串是否为数组的一部分

PHP:检查字符串是否为数组的一部分
EN

Stack Overflow用户
提问于 2016-02-16 14:28:17
回答 2查看 51关注 0票数 0

我正在开发基于PHP的小票务系统。

现在我想排除发送者被处理。

这是一份可能被排除在外的发件人名单:

代码语言:javascript
复制
Array ( 
"badboy@example.com",
"example.org",
"spam@spamming.org"
)

好的-现在我想检查邮件的发件人是否与其中之一匹配:

代码语言:javascript
复制
$sender = "badboy@example.com";

我认为这很容易,我想我可以用in_array()来解决这个问题。

但那又如何

代码语言:javascript
复制
$sender = "me@example.org";

example.org是在数组中定义的,而不是me@example.org --但是me@example.org也应该排除,因为example.org在禁止发送者列表中。

我怎么能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-16 14:34:34

也许您正在寻找stripos函数。

代码语言:javascript
复制
<?php

if (!disallowedEmail($sender)) { // Check if email is disallowed
    // Do your stuff
}

function disallowedEmail($email) {
    $disallowedEmails = array ( 
        "badboy@example.com",
         "example.org",
         "spam@spamming.org"
     )
     foreach($disallowedEmails as $disallowed){
         if ( stripos($email, $disallowed) !== false)
             return true;
     }
     return false
}
票数 1
EN

Stack Overflow用户

发布于 2016-02-16 15:16:31

striposimplodeexplode函数的另一个简短的替代方案:

代码语言:javascript
复制
$excluded = array( 
"badboy@example.com",
"example.org",
"spam@spamming.org"
);

$str = implode(",", $excluded);  // compounding string with excluded emails
$sender = "www@example.com";
//$sender = "me@example.org";

$domainPart = explode("@",$sender)[1];  // extracting domain part from a sender email

$isAllowed = stripos($str, $sender) === false && stripos($str, $domainPart) === false;

var_dump($isAllowed);    // output: bool(false)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35435168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档