PHP正则姓名如何加*号

王明 =》 王*,
王小明=》 王*明

现在需要匹配姓名,把第二个字隐藏掉,代码该怎么写

阅读 4.6k
4 个回答
mb_internal_encoding('utf-8');
$name = '王小明';
$ret = mb_substr($name, 0, 1) . '*' . mb_substr($name, 2);
var_dump($ret);

测试了下中英文都可以

       <?php
          $name   = '王小';
          $length = mb_strlen($name,'UTF8');
            if($length<=0)  echo  '';
        
           $first = mb_substr($name,0,1,'utf-8') . '*';
           $last  = '';
           if($length >= 3) {
               $last  = mb_substr($name, -1, 1,'utf-8');
           }
           
           var_dump($first . $last);die;

<?php
$str='王明';
if(mb_strlen($str,'UTF8')==2){

 $result_str=mb_substr($str,0,1,'UTF8').'*';

}elseif(mb_strlen($str,'UTF8')==3){

  $tmp_str=mb_substr($str,0,1,'UTF8').'*';
  $result_str=$tmp_str.mb_substr($str,-1,1,'UTF8');

}
var_dump($result_str);
办法有很多啊, 如果全部都是汉字的话, 可以用这种啊

mb_regex_encoding("utf-8");
echo mb_ereg_replace_callback("^(\w{1})(\w{1})(\w*)$",function($matches){return $matches[1]."*".$matches[3];},"王小明");
推荐问题