在项目上有些客户要求在显示患者姓名的时候,需要把姓名中间的字用*号替代,如果是两个字的把第二个字用*号替代,如果三个字或者三个字以上的姓名,就把中间的全部用*号替代。对于这个需求,前前后后做了三个方案,最后一个方案是比较合适的,其他两种方案都有弊端。

方案一

$PatientName = "张三";
$tag = mb_substr($PatientName,1,1,'UTF-8');
$PatientName = str_replace($tag,"*",$PatientName);

这个方案有两个缺点

缺点1,只能把患者姓名的第二个字用*号替代,如果患者是少数民族或者复姓的,那么他们的姓名可能有好几个字,例如:欧阳明波会替换成欧*明波。这个是不符合需求的。

缺点2,如果患者姓名三个字的,第二个和第三个字是一样的,就会把后面两个字全部替换成*号了。例如:李萌萌就会替换成李**,这样也不符合需求。

方案二,

1651593049209860.png

这个方案有1个缺点,那就是如果姓名只有两个字,就不会替换任何内容了。

方案三

image.png


这个方案就是比较完美的了,不管患者姓名是几个字组成的,都可以把中间的全部替换成*号,如果是两个字的就好吧第二个字替换成*号。姓名是三个字的,后两个字是重叠的,也只会把中间的字替换成*号。

标签: php技术

评论已关闭

辽公网安备21010602000703号 备案号:冀ICP备2022001219号