douyou2368 2015-10-01 13:04
浏览 11
已采纳

PHP - 字符串包含

I have an array witch contains badge objects. I'm trying to remove objects that don't match search criteria, at the moment the criteria is if the name doesn't match a searched string

The code i have so far is

        foreach ( $badgeList as $key=>$badge ) {
            $check = strpos($badge->getName() , $_POST['name']);
            if($check === false) {
                unset($badgeList[$key]);
                print "<br/>" . $badge->getName() . " -- post: " . $_POST['name'];
            }
        }

Whats happening is its remove all objects from the array, even those that do match the string

This is whats being printed

Outdoor Challenge -- post: outdoor

Outdoor Plus Challenge -- post: outdoor

Outdoor Challenge -- post: outdoor

Outdoor Challenge -- post: outdoor

Nights Away 1 -- post: outdoor

Year 1 -- post: outdoor

Nights Away 5 -- post: outdoor

  • 写回答

2条回答 默认 最新

  • dslfjrmz70457 2015-10-01 13:31
    关注

    If you need looser matching, use a case insensitive function or regex:

    stristr($badge->getName() , $_POST['name'])
    

    or

    if( ! preg_match("/" . $_POST['name'] . "/i",$badge->getName()) ) {
    

    In these suggestions stristr is the case insensitive version of strstr and /i is the case insensitive flag for regex

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分