将字符串的所有字符替换为星号,但PHP中的第一个和最后一个字符除外

时间:2013-04-18 18:01:31

标签: php string function

如何将字符串中的所有字符替换为星号,除了PHP中的第一个和最后一个字符?

例如,test应变为t**tprofanity变为p******y,依此类推

5 个答案:

答案 0 :(得分:17)

function get_starred($str) {
    $len = strlen($str);

    return substr($str, 0, 1).str_repeat('*', $len - 2).substr($str, $len - 1, 1);
}


$myStr = 'YourName';
echo get_starred($myStr); //should show Y******e 

答案 1 :(得分:3)

这是一个小功能:

function asterisks($toConvert) {
    $astNumber = strlen($toConvert) - 2;
    return substr($toConvert, 0, 1) . str_repeat("*", $astNumber) . substr($toConvert, -1);
}

$tempString= 'teststring';
echo asterisks($tempString);

答案 2 :(得分:0)

$str = "test";
$len = strlen($str);
$str1 = '';
for($i=0; $i < $len; $i++) {
   if($i != 0 && $i != ($len-1)) {
       $str1 .= '*';
   } else {
       $str1 .= $str[$i];
   }
}

echo $str1;

使用上面的代码。这将满足您的要求。

答案 3 :(得分:0)

这样的东西
$split_string = str_split($start_string);
$i = 1;
while ( $i < count($split_string)-2 ){
    split_string[$i] = '*';
    $i++;
}

答案 4 :(得分:-1)

这将替换变量*bcdefghijklm*中的第一个和最后一个$text个字符;

$text = 'abcdefghijklmn';
$count = strlen($text)-1;
echo str_replace(array($text[0], $text[$count]), '*', $text);