首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP多个“stripos”语句

PHP多个“stripos”语句
EN

Stack Overflow用户
提问于 2018-06-26 15:19:21
回答 2查看 196关注 0票数 0

我试图在字符串中搜索字符串,找出包含任何一组单词的字符串,而不包含另一组的字符串。

到目前为止,我使用的是嵌套stripos语句,如下所示:

代码语言:javascript
复制
            if(stripos($name, "Name", true))
            {
                if((stripos($name, "first", true)) || (stripos($name, "for", true)) || (stripos($name, "1", true)))
                {
                    if(stripos($name, "error"))
                    {

这不仅不起作用,而且似乎也无谓地冗长。

我是否可以构造一个简单的字符串来表示“如果这个字符串包含这些单词中的任何一个,但是没有这些单词,那么就这样做”?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-26 15:22:03

你可以很容易地把它浓缩成这样;

代码语言:javascript
复制
if(
    stripos($name, "Name", true) &&
    (stripos($name, "first", true)) || (stripos($name, "for", true)) || (stripos($name, "1", true)) &&
    stripos($name, "error")
)
{
    /* Your code */
}

你也可以做以下工作,这样做会更好(海事组织);

代码语言:javascript
复制
if(
    stristr($name, "Name") &&
    (stristr($name, "first") || stristr($name, "for") || stristr($name, "1")) &&
    stristr($name, "error")
)
{
    /* Your code */
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-26 15:43:29

黑名单和白名单。

代码语言:javascript
复制
$aWhitelist = [ "Hi", "Yes" ];
$aBlacklist = [ "Bye", "No" ];

function hasWord( $sText, $aWords ) {
    foreach( $aWords as $sWord ) {
        if( stripos( $sText, $sWord ) !== false ) {
            return true;
        }
    }
    return false;
}

// Tests
$sText1 = "Hello my friend!"; // No match // false
$sText2 = "Hi my friend!"; // Whitelist match // true
$sText3 = "Hi my friend, bye!"; // Whitelist match, blacklist match // false
$sText4 = "M friend no!"; // Blacklist match // false

var_dump( hasWord( $sText1, $aWhitelist ) && !hasWord( $sText1, $aBlacklist ) );
var_dump( hasWord( $sText2, $aWhitelist ) && !hasWord( $sText2, $aBlacklist ) );
var_dump( hasWord( $sText3, $aWhitelist ) && !hasWord( $sText3, $aBlacklist ) );
var_dump( hasWord( $sText4, $aWhitelist ) && !hasWord( $sText4, $aBlacklist ) );
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51046366

复制
相关文章

相似问题

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