我使用像「gjhyYhK」,「HJjhkeuJ」等代碼,但希望用戶展示這些代碼,如:如何在PHP
gj_y__K
HJj__e_J
表示代碼將在代碼中隨機位置用「_」編輯。
我使用像「gjhyYhK」,「HJjhkeuJ」等代碼,但希望用戶展示這些代碼,如:如何在PHP
gj_y__K
HJj__e_J
表示代碼將在代碼中隨機位置用「_」編輯。
這會做你想要什麼:
$str = "gjhyYhK";
$len = strlen($str);
$num_to_remove = ceil($len * .4); // 40% removal
for($i = 0; $i < $num_to_remove; $i++)
{
$k = 0;
do
{
$k = rand(1, $len);
} while($str[$k-1] == "_");
$str[$k-1] = "_";
}
print $str . "\n";
如果你想要更多的下劃線,改變$underscores
值。這將保證你得到你想要的,只要多少突顯,只要你想比字符串的長度較少
你可以試試下面的代碼來得到你正在尋找
<?php
$string = "gjhyYhK";
$percentage = 40;
$total_length = strlen($string);
$number_of_underscore = floor(($percentage/100) * $total_length); // I have use floor value, you can use ceil() as well
for ($i = 1; $i <= $number_of_underscore; $i++)
{
$random_position = rand(0, strlen($string) - 1); // get the random position of character to be replaced
if (substr($string, $random_position, 1) !== '_') // check if its already replaced underscore (_)
{
$string = preg_replace("/" . (substr($string, $random_position, 1)) . "/", '_', $string, 1); // here preg_replaced use to replace the character only once, (i.e str_replace() will replace all matching characters)
}
else
{
$i--; // else decrement $i for the loop to run one more time
}
}
echo $string;
?>
讓我的功能知道是否有其他需要幫助
你正在改變字符串的長度 - 所有的字符仍然存在,以相同的順序。只是與他們之間的下劃線 –
@pala_答案更新,請刪除downvote .. –
$str = "ADFJ";
$strlen = strlen($str);
$newStr = '';
for ($i = 0; $i < $strlen; $i++) {
if ($i == rand(0, $strlen)) {
$newStr .= '_';
} else {
$newStr .= $str[$i];
}
}
echo $newStr;
AD_FJ,ADF_J,A_D_FJ這就是我正在得到 –
運行它一些。你會明白我的意思。更何況你實際上並沒有取代任何字符,只是將字符串拉伸出來 –
你現在可以試試。編輯答案 –
試試這個:
$string=array(
'gjhyYhK',
'HJjhkeuJ'
);
$arr=array();
foreach ($string as $key=>$value) {
$arr[$key]='';
for ($i=1; $i <=strlen($value); $i++) {
if(rand(0,1)){
$arr[$key].=substr($string[$key],$i,1);
}else{
$arr[$key].='_';
}
}
}
var_dump($arr);
多大比例的字符你想要更換? –
priyanka顯示你試過什麼?把你的代碼以及 –
嗨帕拉!我想刪除40%的字符。 –