REGEX для маскировки всех символов, кроме первого и последнего символов

Я хочу скрыть все символы строки, кроме первого и последнего символов. Я попробовал что-то вроде этого:

<?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; }