Есть строка:
verstala@website.com
Вопрос:
Как заменить в данной строке все символы до @ и исключить первый символ и последний до @, на *. То есть должно получиться вот так:
v******a@website.com
Как реализовать данную задачу?
$str = "verstala@website.com";
$pos = stripos($str, "@");
for($i=1; $i < $pos - 1; $i++) $str[$i] = "*";
echo $str; //Выводит v******a@website.com
$str = "verstala@website.com";
// При условии, что строка валидный мейл
// Первая часть это имя пользователя, вторая адрес почты
preg_match('/(?<hide>.+)@(?<addr>.+)/', $str, $matches);
//----------------------------------------------------------------
// $matches['hide'][0] - первая буква
$hide_name = $matches['hide'][0] . str_repeat("*", strlen($matches['hide']) - 1);
//
echo sprintf("%s@%s", $hide_name, $matches['addr']);
Ещё вариант в коллекцию ответов:
$str = 'verstala@website.com';
echo preg_replace_callback(
'~(?<=[\pL\d]).+(?=[\pL\d]@)~',
function($a){ return str_repeat('*', strlen($a[0])); },
$str
);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости