【发布时间】:2016-04-14 21:14:43
【问题描述】:
PHP中如何将字符串中除首尾字符外的所有字符替换为星号?
例如test应该变成t**t和profanity变成p******y等等
【问题讨论】:
-
使用
substr获取第一个和最后一个字符;然后在它们之间附加(length($string) - 2)星号。 -
我已经更新了我的答案Here检查它!
PHP中如何将字符串中除首尾字符外的所有字符替换为星号?
例如test应该变成t**t和profanity变成p******y等等
【问题讨论】:
substr获取第一个和最后一个字符;然后在它们之间附加(length($string) - 2) 星号。
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
【讨论】:
这里有一个小功能:
function asterisks($toConvert) {
$astNumber = strlen($toConvert) - 2;
return substr($toConvert, 0, 1) . str_repeat("*", $astNumber) . substr($toConvert, -1);
}
$tempString= 'teststring';
echo asterisks($tempString);
【讨论】:
$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;
使用上面的代码。这将满足您的要求。
【讨论】:
类似
$split_string = str_split($start_string);
$i = 1;
while ( $i < count($split_string)-2 ){
split_string[$i] = '*';
$i++;
}
【讨论】:
这将替换变量$text中的第一个和最后一个类似*bcdefghijklm*的字符;
$text = 'abcdefghijklmn';
$count = strlen($text)-1;
echo str_replace(array($text[0], $text[$count]), '*', $text);
【讨论】: