Php 如何用星号替换某些字符
我有一个简单的PHP任务,但由于我不熟悉正则表达式或其他东西。。。我不知道我要做什么 我想要的其实很简单 假设我有这些变量:Php 如何用星号替换某些字符,php,Php,我有一个简单的PHP任务,但由于我不熟悉正则表达式或其他东西。。。我不知道我要做什么 我想要的其实很简单 假设我有这些变量: $Email = 'john@example.com'; // output : ****@example.com $Email2 = 'janedoe@example.com'; // output : *******@example.com $Email3 = 'johndoe2012@example.com'; // output : ***********@exa
$Email = 'john@example.com'; // output : ****@example.com
$Email2 = 'janedoe@example.com'; // output : *******@example.com
$Email3 = 'johndoe2012@example.com'; // output : ***********@example.com
$Phone = '0821212121'; // output : 082121**** << REPLACE LAST FOUR DIGIT WITH *
$Email=”john@example.com'; // 输出:***@example.com
$2janedoe@example.com'; // 输出:******@example.com
$3johndoe2012@example.com'; // 输出:*********@example.com
$Phone='082121';//输出:082121****您将需要为每一个设置一个特定的函数。邮件:
function hide_mail($email) {
$mail_segments = explode("@", $email);
$mail_segments[0] = str_repeat("*", strlen($mail_segments[0]));
return implode("@", $mail_segments);
}
echo hide_mail("example@gmail.com");
电话号码
function hide_phone($phone) {
return substr($phone, 0, -4) . "****";
}
echo hide_phone("1234567890");
看到了吗?没有使用一个正则表达式。但是,这些函数不检查有效性。您需要确定什么类型的字符串是什么,并调用相应的函数。我尝试了一个单一的正则表达式解决方案,但由于长度可变的星号,我认为这是不可能的。也许是这样的:
function anonymiseString($str)
{
if(is_numeric($str))
{
$str = preg_replace('/^(\d*?)\d{4}$/', '$1****');
}
elseif(($until = strpos($str, '@')) !== false)
{
$str = str_repeat('*', $until) . substr($str, $until + 1);
}
return $str;
}
对于电子邮件,此函数保留第一个字母:
function hideEmail($email)
{
$parts = explode('@', $email);
return substr($parts[0], 0, min(1, strlen($parts[0])-1)) . str_repeat('*', max(1, strlen($parts[0]) - 1)) . '@' . $parts[1];
}
hideEmail('hello@domain.com'); // h****@domain.com
hideEmail('hi@domain.com'); // h*@domain.com
hideEmail('h@domain.com'); // *@domain.com
我创建了一个函数来实现这一点,对我来说效果很好。我希望能得到帮助
function ofuscaEmail($email, $domain_ = false){
$seg = explode('@', $email);
$user = '';
$domain = '';
if (strlen($seg[0]) > 3) {
$sub_seg = str_split($seg[0]);
$user .= $sub_seg[0].$sub_seg[1];
for ($i=2; $i < count($sub_seg)-1; $i++) {
if ($sub_seg[$i] == '.') {
$user .= '.';
}else if($sub_seg[$i] == '_'){
$user .= '_';
}else{
$user .= '*';
}
}
$user .= $sub_seg[count($sub_seg)-1];
}else{
$sub_seg = str_split($seg[0]);
$user .= $sub_seg[0];
for ($i=1; $i < count($sub_seg); $i++) {
$user .= ($sub_seg[$i] == '.') ? '.' : '*';
}
}
$sub_seg2 = str_split($seg[1]);
$domain .= $sub_seg2[0];
for ($i=1; $i < count($sub_seg2)-2; $i++) {
$domain .= ($sub_seg2[$i] == '.') ? '.' : '*';
}
$domain .= $sub_seg2[count($sub_seg2)-2].$sub_seg2[count($sub_seg2)-1];
return ($domain_ == false) ? $user.'@'.$seg[1] : $user.'@'.$domain ;
}
电子邮件的功能($email,$domain\uux=false){
$seg=爆炸('@',$email);
$user='';
$domain='';
if(strlen($seg[0])>3){
$sub_seg=str_split($seg[0]);
$user.=$sub_seg[0]。$sub_seg[1];
对于($i=2;$i