我在PHP中搜索最优雅的方式来隐藏字符串(例如用户名)。
例如,用户名应显示为:
tim will be shown as: t*m
因此,用户名本身并非完全"加密",但没有人可以猜出他们的登录名,或者至少不能确定。
答案 0 :(得分:2)
您可以使用preg_replace:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=PASSCODE"]];
希望这有帮助。
答案 1 :(得分:2)
您可以使用以下regex
和preg_replace
功能,如
(^.|.$)(*SKIP)(*F)|(.)
示例强>
$your_string = "Narendra";
echo preg_replace("/(^.|.$)(*SKIP)(*F)|(.)/","*",$your_string);
输出
N******a
正则表达式的解释:
(^.|.$)
这将捕获单词(*SKIP)(*F)
这将跳过上述捕获的字词|(.)
此处剩下的其他字母将被捕获,可以用你的角色进一步替换,即*
在这里答案 2 :(得分:0)
尝试:
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
答案 3 :(得分:0)
您可以执行以下操作:
<?php
function HideUN($username = "") {
$replaced = "";
# Count the characters in username and remove an extra asterik (*)
# Substring, remove all characters and leave the first one and add the last one
for($i = 0; $i < strlen($username) -1; $i++) $replaced .= "*";
return substr($username, 0, 1)."".$replaced."".substr($username, -1, 1);
}
# Call this function
$string = "John";
echo HideUN($string);
?>
substr()
删除第一个字符后的所有字符,然后for()
循环,计算$string
中的字符数,然后我们将asterik(*)添加到另一个名为{ $replaced
。
然后在最后我们把它们放在一个回声中。输出:J***n
答案 4 :(得分:0)
function Split_Hide_Name($name) {
$name = trim($name);
$split_name = explode(' ',$name);
foreach($split_name as $v) {
$string []= strlen($v);
}
$number_of_letters_to_show = 3;
$first_name_length = $string[0];
$last_name_length = $string[count($string)-1];
$first_name1 = $split_name[0];
$last_name1 = $split_name[count($string)-1];
$fname_cover = '';
for ($i = 0; $i < $first_name_length - $number_of_letters_to_show; $i++){
$fname_cover .="*";
}
$lname_cover = '';
for ($i = 0; $i < $last_name_length - $number_of_letters_to_show; $i++){
$lname_cover .="*";
}
$first_name = substr_replace($first_name1,$fname_cover,$number_of_letters_to_show);
$last_name = substr_replace($last_name1,$lname_cover,$number_of_letters_to_show);
return $first_name.' '.$last_name;}