Как заменить символы в строке?

186
20 июля 2018, 12:00

Есть строка:

verstala@website.com

Вопрос:

Как заменить в данной строке все символы до @ и исключить первый символ и последний до @, на *. То есть должно получиться вот так:

v******a@website.com

Как реализовать данную задачу?

Answer 1
$str = "verstala@website.com";
$pos = stripos($str, "@");
for($i=1; $i < $pos - 1; $i++) $str[$i] = "*";
echo $str; //Выводит v******a@website.com
Answer 2
$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']);
Answer 3

Ещё вариант в коллекцию ответов:

$str = 'verstala@website.com';
echo preg_replace_callback(
    '~(?<=[\pL\d]).+(?=[\pL\d]@)~',
    function($a){ return str_repeat('*', strlen($a[0])); },
    $str
);
READ ALSO
Как добавить кнопки &ldquo;Последняя&rdquo; и &ldquo;Первая&rdquo;

Как добавить кнопки “Последняя” и “Первая”

Делал пагинацию для постов, получилось только сделать вывод номеров страниц, а мне еще нужно сделать кнопки , что бы переместиться на последнюю...

210
Знаки вопроса при запросе через Mysql на страницу php

Знаки вопроса при запросе через Mysql на страницу php

MySQL отправляет знаки вопроса вместо русских символовЯ уже везде где можно установил кодировку utf-8, везде уже писал SET NAMES utf-8 и htaccess создавал...

168
Как проверить каких чисел больше в массиве php

Как проверить каких чисел больше в массиве php

Например есть массив, с числами: 1,1,2,1,3,1,2Как проверить каких чисел больше в массиве php?

208