dpswo40440 2018-08-16 15:10
浏览 28
已采纳

如何编写此正则表达式与preg_match一起使用?

I have a series of keywords I want to match against an item name to determine if it is a labor line item or not. How can I write the pattern regex so it matches them all in a more succinct block of code?

if(preg_match('/(LABOR)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(SERVICES)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Pull and Prep)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Supervision)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Coordination)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Disposal)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Handling)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Inspect)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Re-ship)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Storage)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Management)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Show Form)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Receive)/i', $Item[Name])){        
    $subtotal += $mysubtotal;
}elseif(preg_match('/(Paperwork)/i', $Item[Name])){
    $subtotal += $mysubtotal;
}
  • 写回答

4条回答 默认 最新

  • dongpao1926 2018-08-16 15:17
    关注

    The pipe, |, with preg_replace and its fifth parameter should be all you need.

    preg_replace('/LABOR|SERVICES|Pull and Prep|Supervision|Coordination|Disposal|Handling|Inspect|Re-ship|Storage|Management|Show Form|Receive|Paperwork/i', '', $Item['Name'], -1, $subtotal);
    

    You might want to use word boundaries as well so you know that it is an exact match (unless laboring, labors, etc are valid?):

    preg_replace('/\b(?:LABOR|SERVICES|Pull and Prep|Supervision|Coordination|Disposal|Handling|Inspect|Re-ship|Storage|Management|Show Form|Receive|Paperwork)\b/i', '', $Item['Name'], -1, $subtotal);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵