如何修改PHP字段映射函数,实现按内容包含规则的模糊匹配替换?
实现代码
function my_map_field( $data ) { // 键为需要匹配的模糊关键词,值为对应的映射结果 $map = [ '12 years' => '12+', '4 years' => '4+', '7 years' => '7+', '9 years' => '9+', ]; foreach ($map as $keyword => $result) { // 用mb_stripos支持多字节字符且不区分大小写,需要区分大小写可替换为mb_strpos if (mb_stripos($data, $keyword) !== false) { return $result; } } // 未匹配到返回空值 return ''; }
逻辑说明
- 你可以根据业务需要直接调整
$map数组的键值对,新增匹配规则只需要加对应元素即可 - 如果存在多个关键词同时匹配的情况,会优先返回数组中排在前面的关键词对应的结果,你可以通过调整数组元素顺序控制优先级
- 代码中使用
mb_stripos是为了兼容多字节字符且不区分大小写,如果你不需要这些特性,也可以用PHP原生的stripos(不区分大小写、单字节)或者strpos(区分大小写、单字节)函数替换,性能会略高一点 - 如果你需要未匹配时返回null而非空字符串,只需要把最后一行的
return '';改为return null;即可
内容的提问来源于stack exchange,提问作者Michal Kovalčík
相关产品推荐
相关产品推荐

