Я хочу скрыть все символы строки, кроме первого и последнего символов. Я попробовал что-то вроде этого:
<?php $count = 0; $string='asdfbASDF1234'; echo preg_replace('/(?!^)\S/', '*', $string, -1 , $count); ?>
Он маскирует все символы, кроме первого. Какое правильное регулярное выражение для этого?
Это регулярное выражение, которое вы хотите:
$string='asdfbASDF1234'; echo $string."\n"; echo preg_replace('/(?!^.?).(?!.{0}$)/', '*', $string);
Почему бы не использовать str_repeat()
?
$length = strlen($in); $out = $in[0] . str_repeat('*', $length - 2) . $in[$length-1];
любой, кто ищет маскировку всех букв, но сначала каждого слова в данном предложении:
function maskele($in){ $kelimeler=explode(" ",$in); $isim=null; foreach ($kelimeler as $kelime){ $length = strlen($kelime); $out = $kelime[0] . str_repeat('*', $length - 1) ; $isim.=$out. " "; } return $isim; }